[수업후] 포인터

2011. 4. 18. 03:35 from PROGRAMMING/C

포인터변수

 

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;

'PROGRAMMING > C' 카테고리의 다른 글

[수업후] 포인터, const  (0) 2011.04.21
[수업후] 포인터와 배열  (0) 2011.04.20
[수업후] 배열  (0) 2011.04.15
[수업후] while, for, 상수, 함수  (0) 2011.04.14
[기초] 재귀함수  (0) 2011.04.12
Posted by 마마필로 :