1. 데이터를 전달하는 방식
1) 값 전달 방식 : 함수의 일반적인 값 전달 방식. 함수의 안정성과 독립성을 제공
2) 주소 전달 방식 : ⓐ 함수를 호출한 후 실 매개 변수의 값이 변경되도록 하기위한 경우
ⓑ 함수의 결과 값을 두 개 이상 되돌리기 위한 경우
ⓒ 함수의 매개 변수가 배열인 경우
2. 포인터
1) 주소값, 어드레스 라고도 불린다.
> 메모리상의 특정 위치 값을 의미한다.
2) 포인터 연산자 "&" > 변수가 할당 되 있는 주소값이 출력된다.
ex )
#include<stdio.h>
void main()
{
int a;
a = 10;
printf("a = %2d\ta의 주소 = %x\n",a,&a);
}
결과 : a = 10 a의 주소 = 12ff7c
(%x는 16진수를 출력할때 사용하는 것)
3) 포인터 변수
ⓐ * 기호 : 선언된 변수가 주소값을 저장할 수 있는 포인터 전용 변수라는 의미를 부여
문법 > 자료형 *포인터변수명;
ⓑ 포인터 변수에는 주소 값만을 대입해야 한다.
> 포인터 변수 = &변수;
ex>
01 #include<stdio.h>
02 void main()
03 {
04 int a= 10;
05 int *ptr_a;
06 ptr_a = &a;
07 printf("a = %d\t*ptr_a = %d\tptr_a = %x\n",a,*ptr_a,ptr_a);
08 }
4) 포인터 연산자
ⓐ * : 포인터가 가르키는 메모리 주소에 있는 값을 추출
ⓑ & : 변수의 주소를 추출
> 위의 예에서 ptr_a의 값은 &a의 값과 같고
*ptr_a의 값은 a의 값과 같다.
5) 포인터를 이용하여 변수의 내용 변경
#include<stdio.h>
void main()
{
int a, b;
int *ptr;
a = 10;
ptr = &a; //ptr에 a의 주소값을 설정
b = *ptr; //b=a;
*ptr = 20;//a=20;
printf("a = %d b = %d \n",a,b);
}