:: Alice In TechLand ::

[C] 포인터를 공부해보자 본문

====== Study ======/C

[C] 포인터를 공부해보자

별빛 토깽이 2010. 7. 28. 15:24

메인 함수에 다음과 같은 변수가 있다고 해보자.


int a = 5;
int *p;













이때 a에는 4byte만큼 메모리가 할당되고, 포인터변수 p는 가리키는 값이 없으므로 실행오류가 난다.






여기에 다음과 같이 코드를 추가해보면

p = &a;



위의 연산은 p에 a를의 주소를 배정하는 것이다.





여기에 다음의 코드를 추가해서 값을 출력해보면,

printf("%d %d %d %d %d %d", a, &a, p, *p, &*p, &p);


5 3012908 3012908 5 3012908 3012896 가 출력된다.

즉, &a와  p,  &*p가 모두 변수 a의 주소인 3012896를 가리키는 것을 알 수 있다.
*p는 가리키는 주소의 값을 나타내므로 a와 같은 값을 나타내는 결과를 확인할 수 있다.
&p는 포인터변수 p의 주소를 가리킨다.

a의 주소는 실행할 때마다 다르게 나온다.







다음과 같은 배정문은 역참조라 한다.

int b = *p;

b에는 p가 가리키는 값이 배정되기 때문에, b를 출력시키면 5가 출력된다.