본문 바로가기
온라인 멘토와 함께하는 공부/인공지능

[C언어] 포인터 배열과 배열 포인터의 차이

by 열공노년 2023. 10. 26.
반응형

포인터 배열과 배열 포인터의 차이

포인터 배열 (Array of Pointers)

"포인터 배열"이란 포인터들로 이루어진 배열을 말합니다. 이 배열의 각 요소는 포인터 타입입니다. 예를 들어, 정수 포인터의 배열은 다음과 같이 선언할 수 있습니다.

int *ptrArray[3];

이 예에서 ptrArray는 정수 포인터 3개를 저장할 수 있는 배열입니다. 각 배열 요소는 정수를 가리키는 포인터입니다.

int a = 1, b = 2, c = 3;
ptrArray[0] = &a;
ptrArray[1] = &b;
ptrArray[2] = &c;

배열 포인터 (Pointer to Array)

"배열 포인터"는 배열을 가리키는 포인터를 의미합니다. 배열 포인터는 배열의 첫 번째 요소를 가리키는 것이 아니라, 배열 자체를 가리킵니다. 배열 포인터는 다음과 같이 선언됩니다.

int (*arrayPtr)[3];

이 예에서 arrayPtr는 크기가 3인 정수 배열을 가리키는 포인터입니다.

int arr[3] = {1, 2, 3};
arrayPtr = &arr;

주요 차이점

  1. 타입과 용도: 포인터 배열은 포인터들의 배열이며, 배열 포인터는 배열을 가리키는 포인터입니다.
  2. 선언 방식: 포인터 배열은 괄호를 사용하지 않고, 배열 포인터는 괄호를 사용하여 선언합니다.
    • 포인터 배열: int *ptrArray[3];
    • 배열 포인터: int (*arrayPtr)[3];
  3. 메모리 구조: 포인터 배열은 여러 개의 포인터가 저장된 배열 공간을 가집니다. 배열 포인터는 단일 포인터 변수가 배열을 가리킵니다.

이 두 개념은 C언어에서 자주 혼동되지만, 선언 방식과 사용 방식을 잘 이해하면 쉽게 구분할 수 있습니다.

반응형