Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 함수에 배열 전달

<시간/>

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