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

 。

 

posted @ 2024-11-18 14:59  小鲨鱼2018  阅读(1)  评论(0编辑  收藏  举报