[c] 배열과 포인터 산술 연산

배열과 포인터

배열은 메모리에 연속적으로 할당된 원소들의 모음이고, 각 원소는 인덱스를 사용하여 접근할 수 있습니다. 배열의 이름은 해당 배열의 첫 번째 원소의 메모리 주소를 나타냅니다.

포인터는 변수의 메모리 주소를 가리키는 변수로, 다른 변수의 주소를 저장하거나 조작할 수 있습니다.

배열과 포인터의 관계

C 언어에서 배열은 사실 포인터와 유사하게 동작합니다. 배열의 이름은 해당 배열의 첫 번째 원소의 주소를 나타내며, 이는 포인터 변수와 동일한 개념입니다.

이러한 이유로 배열과 포인터는 상호 교환될 수 있으며, 둘 간의 산술 연산도 가능합니다.

배열과 포인터 산술 연산

배열과 포인터 간의 산술 연산은 메모리 주소의 증가나 감소를 의미합니다. 배열의 이름을 포인터로 캐스팅하거나 배열의 주소를 포인터로 대입한 후에는 포인터 연산을 통해 배열을 조작할 수 있습니다.

아래의 코드는 배열과 포인터 간의 산술 연산 예시입니다.

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;  // 배열의 이름을 포인터에 대입

printf("%d\n", *ptr);      // 1 출력
printf("%d\n", *(ptr+1));  // 2 출력

위 코드에서 ptr+1은 다음 원소의 메모리 주소를 가리키므로 *(ptr+1)은 두 번째 원소를 가리키게 됩니다.

결론

배열과 포인터는 C 프로그래밍에서 각별한 의미를 가지며, 이 둘을 함께 사용하여 메모리를 조작하는 기술은 매우 중요합니다. 배열과 포인터 간의 산술 연산을 이해하는 것은 C 프로그래밍 능력 향상에 도움이 될 것입니다.