C语言中给函数传递数组类型的参数需要注意
给函数传递数组时,无法一下将数组的内容作为整体传进去。 只能传数组名进去,数组名就是数组的首地址,即只能将数组的地址传进去,也就是说,只能传一个4个字节> 大小的地址编号进去。
函数接收的数组可以分为三大类:一维数组、数组指针、指针数组。
1、一维数组
#include <stdio.h>
//void fun (int p[]) //形式1
void fun (int *p) { //形式2
printf("p[2] = %d\n", p[2]);
*(p + 3) = 100; //修改数组中a[3]的值
}
int main () {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
fun(a);
printf("a[3]=%d\n", a[3]);
}
运行结果:
2、数组指针
#include <stdio.h>
//void fun (int p[][4]) //形式1
void fun (int (*p)[4]) {
printf("p[1][1]=%d\n", p[1][1]);
p[0][1] = 100; //修改数组中a[0][1]的值
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
printf("%d ", p[i][j]);
}
printf("\n");
}
}
int main () {
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
fun(a, 3, 4);
printf("a[0][1] = %d\n", a[0][1]);
}
运行结果:
3、指针数组
#include <stdio.h>
void fun (char **q, int x) {
for (int i = 0; i < x; i++) {
printf("%s\n",q[i]);
}
}
int main () {
char *p[3] = {"hello", "world", "kitty"};
fun(p, 3);
return 0;
}
运行结果: