C++에서 함수를 호출할 때 배열의 주소값을 인자로 전달하는 방식을 참조에 의한 호출(Call by Reference)이라고 합니다. 이때 함수 선언부에는 전달된 주소를 받을 수 있도록 포인터를 매개변수로 선언해야 합니다.
예제 코드
#include <iostream>
using namespace std;
void show( int *num) {
cout<<*num;
}
int main() {
int a[] = {3,2,1,6,7,4,5,0,10,8};
for (int i=0; i<10; i++) {
show (&a[i]);
}
return 0;
}실행 결과
32167450108
코드 동작 원리
위 예제가 어떻게 작동하는지 단계별로 살펴보겠습니다.
- 배열
a는 총 10개의 정수 요소로 초기화됩니다. for반복문이 인덱스 0부터 9까지 순회하며, 각 배열 요소의 주소(&a[i])를show()함수에 전달합니다.show()함수는 int형 포인터num으로 해당 주소를 받은 뒤, 역참조 연산자(*)를 사용해 그 주소에 저장된 실제 값을 출력합니다.- 결과적으로 배열의 모든 요소가 공백 없이 차례대로 화면에 표시됩니다.
이처럼 주소를 직접 전달하면 배열 전체를 복사하지 않고도 함수 내부에서 원본 데이터에 접근할 수 있습니다. 따라서 불필요한 메모리 복사를 줄여 프로그램의 메모리 효율성과 실행 성능을 높일 수 있다는 장점이 있습니다.