[C] 이중 포인터

C 2019. 12. 3. 01:21

#include <stdio.h>
int main(){
int a= 10;
int *pt1 = &a;
int **pt2 = &pt1;
int *pt3 = *pt2;
printf("%d %d %d \n", **pt2, *pt1, *pt3);
return 0;
}

int *pt1 = &a; 은 일반적인 포인터다.
pt1 안에는 a의 주소가 들어가있다.
int **pt2 = &pt1;
pt2 안에는 pt1의 주소가 들어가있다.

*pt2의 값은? pt2에 안에 있는 주소 pt1의 값을 가르킨다.
*pt2에는 a의 주소가 들어있다.
**pt2의 값은? pt1의 주소를 타고 들어가 pt1의 값을 가르킴.
pt1의 값은 a의 주소다.

다시 한번 a의 주소를 타고 들어가 a의 값을 가르킴.
a의 값은 10이다.
**pt2는 10이다.
int *pt3 = *pt2;
pt3의 값에 *pt2는 a의 주소라고 했으니
*pt3는 a의 값인 10을 가르킨다.
결국 전부 출력하면 10 10 10 이 나온다.

'C' 카테고리의 다른 글

[C] 파일입출력 fputc fputs  (0) 2019.12.03
[C] 포인터 배열과 배열 포인터  (0) 2019.12.03
[C] const의 사용방법  (0) 2019.12.03
[C] 배열과 포인터와의 관계  (0) 2019.12.03
[C] int형 배열과 char형 배열의 선언  (0) 2019.12.03
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,