C++에서는 전체 배열을 함수에 대한 인수로 전달할 수 없습니다. 그러나 인덱스 없이 배열 이름을 지정하여 배열에 대한 포인터를 전달할 수 있습니다.
1차원 배열을 함수의 인수로 전달하려면 다음 세 가지 방법 중 하나로 함수 형식 매개변수를 선언해야 하며 세 가지 선언 방법은 모두 컴파일러에 정수 포인터가 실행 중임을 알리기 때문에 유사한 결과를 생성합니다. 받을 수 있습니다.
방법-1
다음과 같은 포인터로서의 형식 매개변수 -
void myFunction(int *param) {
.
.
.
} 방법-2
다음과 같은 크기의 배열로 형식 매개변수 -
void myFunction(int param[10]) {
.
.
.
} 방법-3
다음과 같은 크기가 지정되지 않은 배열의 형식 매개변수 -
void myFunction(int param[]) {
.
.
.
} 이제 배열을 다른 인수와 함께 인수로 사용하고 전달된 인수를 기반으로 다음과 같이 배열을 통해 전달된 숫자의 평균을 반환하는 다음 함수를 고려하십시오. –
double getAverage(int arr[], int size) {
int i, sum = 0;
double avg;
for (i = 0; i < size; ++i) {
sum += arr[i];
}
avg = double(sum) / size;
return avg;
} 이제 위의 함수를 다음과 같이 호출해 보겠습니다. -
#include <iostream>
using namespace std;
// function declaration:
double getAverage(int arr[], int size);
int main () {
// an int array with 5 elements.
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
// pass pointer to the array as an argument.
avg = getAverage( balance, 5 ) ;
// output the returned value
cout << "Average value is: " << avg << endl;
return 0;
} 위의 코드를 함께 컴파일하여 실행하면 다음과 같은 결과가 생성됩니다. -
Average value is: 214.4
보시다시피 C++는 형식 매개변수에 대한 경계 검사를 수행하지 않기 때문에 함수에 관한 한 배열의 길이는 중요하지 않습니다.