찬란
이중 포인터 (Pointers to pointers) 본문
포인터를 가리키는 포인터: 다른 포인터의 주소를 보유하는 포인터
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