嵌入式学习——C语言二维数组

一、二维数组

        1、二维数组的定义:

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

                常量表达式1-------------------->

                常量表达式2-------------------->

        存储数据:行变化的慢,列变化的快。

        

        我们可以从图上看出,二维数组的存储方式:每一行存储完再进行下一行的存储的。

        所以它的行肯定变化慢,每一列的值每次都在变化的。

        2、二维数组的引用:

                数组名    [下标1] [下标2];

                int  a[2][3];   int b[4][9];

                1)下标可以是整型表达式     例:a [2-1] [2*2-1];

                2)下标可以是有值的变量     例:a[2*x-1] [ b[3][1] ]//在数值里放数组的值

                3)数组元素可以出现在表达式中   例:b[1][2] = a[2][3]/2;

        注意:使用数组时,下标要在数组的范围内,否则会造成数组越界。

        3、二维数组的初始化 :

                1)分行进行赋初值              

 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

                2)把所有元素写在一个花括号内,按顺序赋初值

int a[3][4]={1,2,3,4,5,6,,7,8,9,10,11,12};

                3)可以对部分元素赋初值,其他自动取0值。

int a[3][4]={{1},{5,6},{9}};

                4)对全部元素赋初值,可不说明第一维的长度,第二维的长度必须说明(分行赋值同理) 

 int a[ ][4]={1,2,3,4,5,6,,7,8,9,10,11,12};
 int a[ ][4]={{1,2,3},{0},{0,10}}; 

         4、练习题:

                1)有一个3×4的二维数组a,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

        分析:

                ①.将a[0][0]作为参考赋给max,将其行列下标分别赋给r=c=0;

                ② 然后用双循环,将其它元素依次与max比较,遇到比max大的就将其赋给max,行列                       下标分别赋给r=i、c=j;

                ③ 全部比较完毕,则a[r][c]便是最大元素及其所在行列值。

#include <stdio.h>
void main()
 { int i,j,r,c,max;
    int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
    max=a[0][0]; r=0;c=0;
   for (i=0;i<=2;i++)
       for (j=0;j<=3;j++)
           if (a[i][j]>max)
              { max=a[i][j];
                 r=i;  c=j;    }
   printf("max=%d,row=%d,colum=%d\n",a[r][c],r,c);
} 

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值