관리 메뉴

FU11M00N

[C언어] Double Pointer 본문

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

 

사진 1-2

 

이중 포인터의 그림을 그리자면 이렇게됩니다.

'Programming > C Language' 카테고리의 다른 글

[C언어] 단일 링크드리스트  (2) 2020.04.24
[C언어] C언어 매크로 정의  (0) 2020.04.19
[C언어] printf 함수  (0) 2020.04.19
C언어 비트 연산자  (1) 2020.04.18
C언어 증감 연산자  (0) 2020.04.18
Comments