如果要在函数中将一维数组作为参数传递,则必须以下三种方式之一声明形式参数,并且所有三种声明方法都会产生类似的结果,因为每个方法都告诉编译器将接收整数指针。类似地,您可以将多维数组作为形式参数传递。
Way-1
形式参数作为指针-
void myFunction(int *param) { . . . }
Way-2
形式参数作为大小数组-
void myFunction(int param[10]) { . . . }
Way-3
形式参数作为未调整大小的数组-
void myFunction(int param[]) { . . . }
示例
现在,考虑以下函数,该函数将一个数组与另一个参数一起作为参数,并基于传递的参数返回通过该数组传递的数字的平均值,如下所示-
double getAverage(int arr[], int size) {int i; double avg; double sum=0;
for (i=0; i < size; ++i) { sum += arr[i]; }
avg=sum/size;
return avg; }
现在,让我们调用上述函数,如下所示-
#include <stdio.h>/* 函数声明 */ double getAverage(int arr[], int size);
int main () {
/* 一个包含 5 个元素的 int 数组 */ int balance[5]={1000, 2, 3, 17, 50}; double avg;
/* 将指向数组的指针作为参数传递 */ avg=getAverage( balance, 5 ) ;
/* 输出返回值✌️ */ printf( "Average value is: %f ", avg );
return 0; }
当上面的代码一起编译并执行时,它会产生以下结果-
Average value is: 214.400000
正如您所看到的,就函数而言,数组的长度并不重要,因为C不对形式参数执行边界检查。