在 C语言程序中,将数组作为函数参数进行传递,不同于标准的赋值调用的参数传递方法,说明如下:

当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中;

当用数组作为实参调用函数时,指向该数组的第一个元素的指针会被传递到函数中。

此时声明函数参数时必须使用和数组相同的数据类型,根据这一点,下面将对函数参数的各种情况进行详细的讲解。

C语言数组名作为函数参数

例如,编写函数 int fun(int lim,int aa[100]),其功能是求出小于或等于 lim 的所有素数,并放在 aa[100] 数组里,输出所有素数。

具体代码如下:

#include /* 包含头文件 */

int fun(int lim, int aa[100]) /* 自定义函数 */

{

int i, j = 0, k = 0; /* 定义数组下标 */

for (i = 2; i < lim; i++) /* 判断是否为素数 */

{

for (j = 2; j < i; j++)

if (i % j == 0)

break;

if (j == i)

aa[k++] = i;

}

return k; /* 程序结束 */

}

int main() /* 主函数 main() */

{

int aa[100], i; /* 定义变量 */

fun(100, aa); /* 调用 fun() 函数 */

printf("100 以内的素数有:\n"); /* 输出信息 */

for (i = 0; i < 25; i++) /* 循环判断数组中的所有数 */

{

printf("%d\t", aa[i]); /* 输出满足条件的数 */

}

printf("\n"); /* 换行输出 */

return 0; /* 程序结束 */

}

运行程序,结果为:

100 以内的素数有:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

使用数组作为函数参数时,一定要注意函数调用时参数的传递顺序。

C语言可变长度数组作为函数参数

可以将函数的参数声明成长度可变的数组。

例如如下代码:

void Fun(char Name[]); /*声明函数*/

char CName[10]; /*定义整型数组*/

Fun(CName); /*将数组作为实参进行传递*/

从上面的代码可以看到,在定义和声明一个函数时将数组作为函数参数,并且没有指明数组此时的长度,这样就可将函数参数声明为长度可变的数组。

C语言指针作为函数参数

还可将函数参数声明为指针。指针作为参数和数组作为参数起同样的作用。将函数参数声明为指针的方法,也是C语言程序比较专业的写法。

例如,声明函数参数为指针,代码如下:

void Fun(int* p); /*声明函数*/

int iArray[10]; /*定义整型数组*/

Fun(iArray); /*将数组作为实参进行传递*/

从上面的代码可以看到,指针在声明 Fun() 函数时作为函数参数。在调用函数时,可以将数组作为函数的实参进行传递。