결론적으로 '배열 포인터'은 배열 전체를 가리키는 하나의 포인터이고 '포인터 배열' 여러 포인터를 저장하는 배열이다.
배열 포인터(Pointer to an Array)
배열 포인터는 특정 타입의 배열을 가리키는 포인터이다. 이는 배열 전체를 가리키며, 주로 다차원 배열을 다룰 때 사용된다. 배열 포인터를 사용하면, 배열의 특정 요소가 아닌 배열 전체를 가리킬 수 있어, 배열의 크기나 다차원 배열의 특정 행에 접근하는 등의 작업을 용이하게 할 수 있다.
int (*ptrToArray)[5]; // 5개의 정수를 가지는 배열을 가리키는 포인터
배열 포인터 예시
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*ptrToArray)[3] = arr; // 배열 포인터: 3개의 정수를 갖는 배열을 가리킴
printf("Using Array Pointer:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", ptrToArray[i][j]); // 배열 포인터를 통해 배열 요소에 접근
}
printf("\n");
}
return 0;
}
포인터 배열(Array of Pointers)
반면, 포인터 배열은 포인터들의 배열이다. 즉, 각 배열 요소가 포인터인 배열을 말한다. 이는 여러 포인터를 저장해야 할 때 사용된다.
int *arrayOfPointers[5]; // 정수를 가리키는 포인터 5개의 배열
포인터 배열 예시
#include <stdio.h>
int main() {
int num1 = 1, num2 = 2, num3 = 3;
int *arrayOfPointers[3] = {&num1, &num2, &num3}; // 포인터 배열: 정수를 가리키는 포인터들의 배열
printf("Using Array of Pointers:\n");
for (int i = 0; i < 3; i++) {
printf("%d ", *arrayOfPointers[i]); // 포인터 배열을 통해 각 정수 값에 접근
}
printf("\n");
return 0;
}
'윤성우의 C Programming' 카테고리의 다른 글
main 함수로의 인자 전달 (3) | 2024.03.06 |
---|---|
Chapter 19. 함수 포인터와 void 포인터 (1) | 2024.03.05 |
2차원 배열 arr, arr[0], arr[0][0] 의 차이 (0) | 2024.03.02 |
2차원 배열이름의 포인터 형 (0) | 2024.03.02 |
포인터 배열과 포인터 배열의 포인터 형 (0) | 2024.03.02 |