[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 프로그래밍에서 밀접한 관계를 가지고 있으며, 배열의 이름은 해당 배열의 첫 번째 요소를 가리키는 포인터로 해석됩니다. 이러한 관계를 이해하면 배열과 포인터를 보다 효과적으로 다룰 수 있습니다.
참조:
- https://www.geeksforgeeks.org/relationship-between-pointers-and-arrays-in-c/
- https://www.tutorialspoint.com/cprogramming/c_pointer_to_an_array.htm