이 글에서는 C++에서 포인터 산술(pointer arithmetic)을 활용하여 배열 요소들의 합을 계산하는 프로그램을 소개합니다. 배열의 이름은 첫 번째 요소의 주소를 가리키는 포인터처럼 동작하므로, ptr + i와 같은 포인터 연산만으로도 인덱스 없이 각 배열 요소에 접근할 수 있습니다.
알고리즘
Begin
사용자 입력값으로 배열 요소를 초기화한다.
s = 0 으로 초기화한다.
i = 0 부터 반복:
s = s + *(ptr + i)
변수 s에 저장된 합계 값을 출력한다.
End
예제 코드
#include<iostream>
using namespace std;
int main() {
int a[7], i, s = 0;
int *ptr;
cout << "Enter the Numbers: ";
for (i = 0; i < 7; i++) {
cin >> a[i];
}
ptr = a;
for (i = 0; i < 7; i++) {
s = s + *(ptr + i);
}
cout << "\nSum of Elements of Array: " << s;
}
실행 결과
Enter the Numbers: 1 2 3 4 5 6 7
Sum of Elements of Array: 28
코드 설명
ptr = a; 문장에서 포인터 ptr은 배열 a의 첫 번째 요소 주소를 저장합니다. 이후 반복문 안에서 사용된 *(ptr + i) 표현식이 바로 포인터 산술의 핵심입니다.
ptr + i는 배열 시작 주소에서 i × sizeof(int) 바이트만큼 이동한 주소를 의미하며, 여기에 역참조 연산자(*)를 붙이면 해당 위치의 실제 값에 접근하게 됩니다. 즉, *(ptr + i)는 a[i]와 완전히 동일한 결과를 반환합니다.
반복문이 종료되면 일곱 개의 요소 값이 모두 변수 s에 누적되어 최종 합계가 화면에 출력됩니다. 위 예제에서는 1부터 7까지의 숫자를 입력했으므로 28이라는 결과가 나옵니다.