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++는 형식 매개변수에 대한 경계 검사를 수행하지 않기 때문에 함수에 관한 한 배열의 길이는 중요하지 않습니다.