찬란

이중 포인터 (Pointers to pointers) 본문

프로그래밍 언어/C, C++

이중 포인터 (Pointers to pointers)

chan4 2023. 4. 13. 23:25

포인터를 가리키는 포인터: 다른 포인터의 주소를 보유하는 포인터

int** dptr;

이중 포인터는 직접 값으로 설정할 수 없다.

int value = 5;

int** dptr = &&value; // compile error

int** dptr = nullptr; // good

 

포인터 배열 (Arrays of pointers)

int* arr[3]; // "포인터" 들의 배열

동적으로 포인터의 배열을 할당할 때 이중 포인터가 흔히 쓰인다.

int **array = new int*[10];
 

 

+ 배열 포인터 (pointer to array)

int (*arr)[4]; // "배열"의 포인터

그냥 하나의 포인터임


2차원 동적 배열 할당

 

고정 배열 할당

int array[10][5];

동적 배열 할당

int** array = new int[10][5]; // 불가능!

int (*array)[5] = new int[10][5]; // 가능!

배열 포인터를 사용하여 array[5]배열을 가리키는 포인터를 10개 생성

아니면 아래처럼 사용해도 좋다. (C++11 이상부터)

auto array = new int[10][5]; // 훨씬 간단하다!

하지만 위 방법은 맨 오른쪽 차원([5])이 컴파일 타임 상수여만 가능하다!

보통은

int** array = new int*[10]; // 크기가 10인 배열 포인터

for(int count = 0; count < 10; ++count)
	array[count] = new int[5];

메모리 해제도 반복문을 통하여 해야 함!

 

'프로그래밍 언어 > C, C++' 카테고리의 다른 글

포인터와 배열 (Pointer and Array)  (0) 2023.04.13
포인터와 const  (0) 2023.04.13
스마트 포인터(Smart pointer)  (0) 2023.04.13
exit() 함수  (0) 2023.04.13
[C/C++] 파일 입출력 - 스트림  (1) 2023.04.13
Comments