Programming/C Language
[C언어] Double Pointer
호IT
2020. 8. 13. 20:58
이중포인터?
기존에 있던 포인터를 생각해보자면 포인터를 선언할때 * 연산자가 한개가 쓰였는데요,
거기에 *연산자를 하나 더 넣어서 이중포인터 라고 부릅니다.
또한 이중포인터에 *를 하나 더붙이면 삼중포인터 까지 가능합니다.
이중 포인터 선언
#include <stdio.h>
int main(){
int a = 50;
int* p =&a;
int** pp = &p; // 이중포인터 선언
return 0;
}
기존에 포인터를 선언 했던 방법인 type *Name 에서 type **Name으로 *만 하나 더 붙여주면 됩니다.
이중 포인터 알아보기
#include <stdio.h>
int main(){
int a = 50;
int* p =&a;
int** pp = &p; // 이중포인터 선언
return 0;
}
사실 단일 포인터만 제대로 이해했다면 이중포인터는 이해 하기 쉽습니다.
#include <stdio.h>
int main(){
int a =50;
int* p = &a;
int** pp = &p;
printf("a = %d &a =%p \n",a,&a);
printf("p = %p &p = %p \n",p,&p);
printf("pp = %p &pp = %p \n",pp,&pp);
printf("a= %d, *p %d, **pp = %d\n",a,*p,**pp);
return 0;
}
위의 코드 결과 값.
더보기
a의 값 = 100 &a 의 주소 값 =000000000062FE1C
p의 값 = 000000000062FE1C &p 의 주소 값 = 000000000062FE10
pp의 값 = 000000000062FE10 &pp의 주소 값 = 000000000062FE08
a = 100, *p 100, **pp = 100
이중 포인터의 그림을 그리자면 이렇게됩니다.