PROGRAMMING/C

[수업후] 포인터

마마필로 2011. 4. 18. 03:35

포인터변수

 

5개의 메모리영역

스택 | 큐 | 데이터 | 코드 | 힙

중 힙 영역에 들어감

 

포인터 연산자

* : 값(포인터 값 연산자)

& : 주소(포인터 주소 연산자) -> 자기값의 주소

중첩포인터

int a=10;

int* pA = &a;

int* ppA = &pA;

 

a=10

&a=0x1234

 

pA=0x1234

*pA=10

&=0x5678

 

ppA=0x5678

&ppA=0x3690

*ppA=0x3690

**ppA=10

 

포인터의 출력

*사용시: 실제 원하는 값의 형식(%d, %c, %f, %lf)

&: %p(주소값)

 

 

포인터 오류

int *pA;

*pA=10;

 

Heap에 저장되어 있는 값은 pA의 주소값인데 초기화 되어 있지 않기 때문에 쓰레기값이 들어있다.

따라서 Stack에 값 10을 넣기위한 주소가 명확하지 않기 때문에 오류가 발생한다.

 

이런 오류를 예방하기 위해 포인터 선언과 동시에 초기화 시켜주는 것이 좋다.

int a=10;

int *pA = &a;