【C语言疯狂讲义】(十二)C语言二维数组

二维数组

 

  1、概念:

 

  一维数组

     相同数据类型的(有序)的数据集合。

 

  二维数组

     一维数组的每一个元素又是一个一维数组(嵌套)二维数组

 

  2、定义和初始化

 

 

 

     1)定义的时候初始化

 

        一维数组:

        数据类型 数组名[常量表达式

   

        int a[5]={1,2,34,5,6};

        int a3[]={1,2,3,4}; 

 

        int a4[5]={1,2};  //int a4[5]={1,2,0,0,0}

 

        int a6[5]={[1]=45}; //int a6[5]={0,45,0,0,0};

        

        二维数组

        数据类型数组名[常量表达式1][常量表达式2]

        int a1[3][2]={1,2,3,4,5,6};

        int a2[3][2]={{1,2},{3,4},{5,6}};

        int a5[3][3]={{1},{2},{3}};//相当于下面的数字矩阵

        //

        1 0 0

        2 0 0

        3 0 0

 

        int a7[3][3]={{[1]=34},{[0]=10},{[2]=29}};

 

        //

        0 34  0

        10 0  0

        0  0 29

 

   

        二维数组支持定义的时候,不指定第一维长度

        int a8[][2]={1,2,3,4,5,6};

 

 

     2)先定义后初始化

 

        一维数组

 

       int a9[3];

       a9[0]=12;

 

        二维数组

       int a10[2][2];

       a10[0][0]= 133;

       a10[1][0]= 12;

 

 

   3、数组的访问越界的问题

 

      访问了不能访问的元素

      对于一维数组来说:如果一维数组的长度为,下标:a[0]~a[n-1]

      对于二维数组来说:如果二维数组int a[m][n],下标:a[0][0] ~ a[m-1][n-1]

 

      除此之外,访问其他的元素都是越界

 

      特别注意:数组的越界在我们的C99编译器下,不报错,也能执行。只不过获取的数据不是我们想要的

 

   4、数组的访问

    

      一维数组

 

        数组名[下标]

 

      二维数组

   

        数组名[第一维下标][第二维下标]

 

   5、数组的存储细节

 

      不管是一维数组还是二维数组,在内存中存储都是连续的

 

      对于二维数组来说,逐行存储。

 

      一维数组:int a[3]  a是常量他是一个地址

  

               数组的首地址 = a = &a[0]

 

              计算数组的长度:sizeof(a)/sizeof(int)

 

      二维数组:

 

              int a[2][2];

 

              数组的首地值 = a = a[0] = &a[0][0]

 

              二维数组的占用的总字节数:2*2*4 = 16

                                sizeof(a) = 16

              二维数组的行数:sizeof(a)/sizeof(a[1])

                      列数:sizeof(a[0])/sizeof(int)

 

   6、数组的遍历

 

      逐个访问数组的元素。

    

      for(int i=0;i<数组长度;i++){

             a[i]

     }

 

      二维数组:

 

      for(int i=0;i<rows;i++){

 

           for(int j=0;j<cols;j++){

 

                a[i][j]

           }

 

      }

 

   7)数组和函数之间的关系

 

 

     1)数组的元素作为函数的实参

 

        值传递:把数组元素的值复制一份给形参

 

     2)数组名作为函数的实参

 

        地址的传递:把数组的首地址传递给函数的形参(让函数的形参也指向了数组的这个空间)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值