C++에서는 배열 전체를 그대로 함수의 인수(argument)로 전달하는 것이 허용되지 않습니다. 대신, 인덱스 없이 배열의 이름만 지정하면 배열을 가리키는 포인터를 함수에 전달할 수 있습니다.
1차원 배열을 함수의 인수로 전달하고 싶다면, 함수의 형식 매개변수(formal parameter)를 아래 세 가지 방법 중 하나로 선언해야 합니다. 세 가지 선언 방식 모두 컴파일러에게 '정수형 포인터를 전달받는다'는 동일한 의미를 전달하기 때문에 결과적으로 같은 방식으로 동작합니다.
배열을 함수에 전달하는 3가지 방법
1. 포인터 형태의 매개변수
void myFunction(int *param) {
// Do something
}2. 크기가 지정된 배열 형태의 매개변수
void myFunction(int param[10]) {
// Do something
}3. 크기가 지정되지 않은 배열 형태의 매개변수
void myFunction(int param[]) {
// Do something
}예제 코드
위 방법들은 실제로 다음과 같이 활용할 수 있습니다.
#include<iostream>
using namespace std;
void arrayAccept(int arr[]) {
cout << "first element is: " << arr[0];
}
int main() {
int arr[2];
arr[0] = 0;
arr[1] = 1;
arrayAccept(arr);
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
first element of array is 0
이처럼 C++에서 배열을 함수에 전달할 때는 실제 배열 복사본이 아니라 배열의 시작 주소(포인터)가 전달된다는 점을 기억하는 것이 중요합니다. 따라서 함수 내부에서 배열 요소를 수정하면 원본 배열에도 그 변경 사항이 그대로 반영됩니다.