C语言数组作为函数参数(3种写法,附带实例)
在 C语言程序中,将数组作为函数参数进行传递,不同于标准的赋值调用的参数传递方法,说明如下:
此时声明函数参数时必须使用和数组相同的数据类型,根据这一点,下面将对函数参数的各种情况进行详细的讲解。
具体代码如下:
例如如下代码:
例如,声明函数参数为指针,代码如下:
- 当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中;
- 当用数组作为实参调用函数时,指向该数组的第一个元素的指针会被传递到函数中。
此时声明函数参数时必须使用和数组相同的数据类型,根据这一点,下面将对函数参数的各种情况进行详细的讲解。
C语言数组名作为函数参数
例如,编写函数 int fun(int lim,int aa[100]),其功能是求出小于或等于 lim 的所有素数,并放在 aa[100] 数组里,输出所有素数。具体代码如下:
#include <stdio.h> /* 包含头文件 */ 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() 函数时作为函数参数。在调用函数时,可以将数组作为函数的实参进行传递。