C언어
C언어 요점 정리 - 다중 포인터
hyestar
2022. 1. 14. 19:24
포인터를 사용하는 이유에 대해서 이야기를 해보자면 변수는 본질적으로 공간이고, 공간은 본질적으로 옮길 수가 없다.
그렇기 때문에 어떤 변수에 있는 값을 누군가에게 공유할 때는 주소를 사용할 수 밖에 없다. 주소가 바로 포인터 이다. 그리고 주소를 담는 변수를 포인터 변수라고 한다.
포인터가 주소를 가리키는 것이라고 했는데, 이중포인터는 싱글포인터의 주소를 가리킬수 있고, n중 포인터는 n-1중 포인터의 주소를 가리킬 수 있다. 포인터를 제대로 이해하셨을 경우 다중포인터도 그리 어렵지 않으실겁니다!!
#include <stdio.h>
int main(void) {
int i = 20;
int* pi = &i;
int** ppi = π
printf("수정 전\n");
printf("i : %d\n", i);
**ppi = 50;
printf("수정 후\n");
printf("i : %d\n", i);
printf("&ppi : %ld\n", (long)&ppi);
printf("&pi : %ld\n", (long)&pi);
printf("&x : %ld\n", (long)&i);
/*
위치 128 : [ppi(8칸)] : 값 : 136
위치 136 : [pi(8칸)] : 값 : 144
위치 144 : [i(4칸)] : 값 : 50
위치는 주소값의 랜덤한 값 뒤의 세개의 숫자를 가져온 것입니다!!
ppi변수에는 pi변수의 시작점 주소가 적혀있고
pi변수에는 i변수의 시작점 주소가 적혀있다.
ppi는 pi를 가리키고
pi는 i를 가리킨다.
*ppi 와 pi는 같은 것을 의미한다.
*pi와 i는 같은 것을 의미한다.
*(*ppi)와 **ppi는 같은 것을 의미한다.
***pi와 i는 같은 것을 의미한다.
*/
return 0;
}
728x90