#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 |