C언어 배열과 포인터
C 언어에서 배열과 포인터는 밀접하게 관련되어 있습니다. 배열은 데이터 요소의 연속적인 집합을 나타내며, 포인터는 메모리 주소를 저장하는 변수입니다. 다음은 배열과 포인터 간의 관계에 대한 간단한 설명입니다.
배열(Array):
- 배열은 동일한 유형의 요소가 연속적으로 저장된 데이터 구조입니다. 예를 들어, int 형식의 배열은 int 형식의 요소가 연속적으로 메모리에 저장됩니다.
- 배열을 선언할 때 크기를 명시해야 합니다. 예를 들어, int arr[5];는 5개의 int 요소로 이루어진 배열을 선언합니다.
포인터(Pointer):
- 포인터는 메모리 주소를 저장하는 변수입니다. 특정 데이터 유형을 가리키는 포인터를 선언할 수 있습니다. 예를 들어, int *ptr;는 int 형식의 데이터를 가리키는 포인터를 선언합니다.
- 포인터는 다른 변수의 주소를 저장할 수 있습니다.
배열과 포인터는 많은 면에서 유사하지만 몇 가지 중요한 차이점도 있습니다. 예를 들어, 배열 이름은 해당 배열의 첫 번째 요소에 대한 포인터로 해석될 수 있습니다. 이것은 배열이 포인터로서 사용될 수 있음을 의미합니다. 그러나 배열과 포인터는 다른 메모리 공간을 차지하고 있습니다.
또한, 배열은 한 번에 여러 요소에 대한 메모리를 할당하는 반면, 포인터는 단일 메모리 주소만을 가리킵니다. 배열의 이름은 상수 포인터로 간주됩니다. 이것은 배열 이름을 변경할 수 없다는 것을 의미합니다.
이러한 관계로, 배열과 포인터는 서로 변환할 수 있습니다. 배열 이름은 해당 배열의 첫 번째 요소에 대한 포인터로 자동으로 변환됩니다. 또한, 포인터 산술을 사용하여 배열의 요소에 접근할 수 있습니다.