[c] 배열과 포인터의 관계

배열과 포인터는 C 프로그래밍에서 중요한 개념이며, 서로 관련이 있습니다. 배열은 일련의 연속적인 메모리 공간에 연결된 동일한 타입의 데이터를 저장하는 데 사용됩니다. 반면에 포인터는 메모리 주소를 가리키는 변수로, 다른 변수나 배열의 첫 번째 요소를 가리킬 수 있습니다.

배열과 포인터의 관계

C 언어에서 배열의 이름은 해당 배열의 첫 번째 요소를 나타내는 포인터 상수로 해석됩니다. 즉, 배열 이름 자체는 해당 배열의 주소를 가리키는 포인터로 여겨집니다.

예를 들어, int arr[5]와 같은 배열을 선언하면, arr은 해당 배열의 첫 번째 요소인 arr[0]의 주소를 가리키는 포인터로 취급됩니다.

int arr[5] = {10, 20, 30, 40, 50};
int *ptr = arr; // 배열의 이름을 사용하여 배열의 첫 번째 요소에 대한 포인터를 얻음

포인터와 배열의 특성

배열과 포인터는 서로 유사한 동작을 합니다. 포인터 산술 연산은 배열의 인덱싱과 동일하며, 배열 이름은 포인터로 취급될 수 있습니다. 또한, 함수에 배열을 전달할 때 배열의 이름은 해당 배열의 첫 번째 요소를 가리키는 포인터로 전달됩니다.

// 배열의 이름을 사용하여 배열의 요소에 접근
int x = *ptr;      // ptr이 가리키는 위치의 값(즉, arr[0])에 접근
int y = *(ptr+1);  // ptr이 가리키는 위치에서 다음 위치(즉, arr[1])의 값에 접근

결론

배열과 포인터는 C 프로그래밍에서 밀접한 관계를 가지고 있으며, 배열의 이름은 해당 배열의 첫 번째 요소를 가리키는 포인터로 해석됩니다. 이러한 관계를 이해하면 배열과 포인터를 보다 효과적으로 다룰 수 있습니다.

참조: