c语言中一维数组和二维数组传递的差异
001、一维数组的传递
[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 测试c程序 #include <stdio.h> void print_array(int a[], int b); // 函数原型声明, 末尾需要冒号 int main(void) { int a[5] = {3,8,9}; print_array(a, 5); //一维数组的调用,只需要给数组名称即可 return 0; } void print_array(int a[], int b) // 意味数组的声明,数据类型 + 数组名 + 下标运算符 { int i; for(i = 0; i < b; i++) { printf("a[%d] = %d\n", i, a[i]); } } [root@PC1 test]# gcc test.c -o kkk ## 编译 [root@PC1 test]# ls kkk test.c [root@PC1 test]# ./kkk ## 测试 a[0] = 3 a[1] = 8 a[2] = 9 a[3] = 0 a[4] = 0
002、二维数组的传递
[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 测试程序 #include <stdio.h> void print_array(const int [4][3]); // 函数原型声明 int main(void) { int a[4][3] = {{2,3,4},{2,2,4},{7,8,9},{7,8,6}}; print_array(a); //二维数组的调用,只需要给数组名即可 return 0; } void print_array(const int a[4][3]) //二维数组的声明,数据类型,数组名,每一维的个数(这个是否可以省略??;一维数组中是可以省略掉的) { int i,j; for(i = 0; i < 4; i++) { for(j = 0; j < 3; j++) { printf("a[%d][%d] = %d ", i, j, a[i][j]); } putchar('\n'); } } [root@PC1 test]# gcc test.c -o kkk ## 编译 [root@PC1 test]# ls kkk test.c [root@PC1 test]# ./kkk ## 运算测试 a[0][0] = 2 a[0][1] = 3 a[0][2] = 4 a[1][0] = 2 a[1][1] = 2 a[1][2] = 4 a[2][0] = 7 a[2][1] = 8 a[2][2] = 9 a[3][0] = 7 a[3][1] = 8 a[3][2] = 6
。