포인터변수
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 |