이중포인터 개념이 하도 헷갈려서 이렇게 남겨 본다.
a, pa, ppa 식으로 나가는 이중포인터에 대해.
이와 같은 방식으로 삼중, 사중 포인터도 생각해 보면 될 듯?
int a
int *pa
int **ppa 의 포인터에 대해
pa = &a
ppa = &pa
즉, pa 는 int 형 변수 a 가 있는 장소
ppa 는 int* 형 변수 pa 가 있는 장소.
따라서
a = *pa = **ppa
pa = &a
ppa = &pa
* 기호가 단독으로 쓰였을 때, 해당 위치에 저장된 값(주소값이 저장되어 있음)의 위치가 의미하는 기호라면
*(pa) 는 pa 에 할당된 위치에 저장된 주소값, 그리고 그 주소값의 위치에 저장된 변수는 바로 a
*(ppa) 는 ppa 에 할당된 위치에 저장된 주소값, 그리고 그 주소값의 위치에 저장된 변수는 pa
따라서 *(*(ppa)) = *pa 가 되므로
a = *pa = **ppa
가 되는 것.
댓글 영역