温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言中的二维数组该怎么理解

发布时间:2022-01-27 11:03:52 来源:亿速云 阅读:173 作者:kk 栏目:开发技术

小编今天带大家了解C语言中的二维数组该怎么理解,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“C语言中的二维数组该怎么理解”的知识吧。

    二维数组:

    引入一个想法:
    一个变量:相当于一个点。
    一维数组(也就是数组):点汇聚成为一条直线。
    二维数组:直线汇聚成一个平面。
    三维数组:平面汇聚成立体图形。

    语法:

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

    • int a[6][6];//6*6,6行6列

    • char b[4][5];//4*5,4行5列

    • double c[6][3];//6*3,6行3列

    二维数组存放方式:

    C语言中的二维数组该怎么理解

    二维数组的访问:

    • 数组名[下标][下标]

    • a[0][0];//访问a数组中第一行第一列的元素

    • b[1][3];//访问b数组中第二行第四列的元素

    • c[3][3];访问c数组中第四行第四列的元素

    • 同样要注意下标的取值范围,以防止数组的越界访问。

    • —比如int a[3][4],其“行下标”的取值范围是0 ~ 2,“列下标”的取值范围是 0 ~ 3,超出任何一个下标的访问都是越界访问。(非常容易中招

    二维数组的初始化

    • 二维数组在内存中是线性存放的,因此可以将所有的数据写在一个花括号内:

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

    • 为了更直观的表示元素的分布,可以用大括号将每一行的元素括起来:

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

    • 或者

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

    • 二维数组也可以仅对部分元素赋初值:

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

    • 如果希望整个二维数组初始化为0,呢么直接在大括号里写一个0即可:

    • int a[3][4]={0};

    • C99同样增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始哈赋值,而未被赋值的元素自动初始化为0:

    • int a[3][4]={[0][0]=1,[1][1]=2,[2][2]=3};

    • 二维数组的初始化也能偷懒,让编译器根据元素的数量计算数组的长度。但只有第1维的元素个数可以不写,其他维度必须加上:

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

    示例:

    例一:二维数组的舒服写法:

      1 #include<stdio.h>
      2 int main()
      3 {
      4   int a[3][4]={
      5     {1,2,3,4},
      6     {5,6,7,8},
      7     {9,10,11,12}
      8   };
      9   int i,j;
     10   for(i=0;i<3;i++)
     11   {
     12     for(j=0;j<4;j++)
     13     {
     14       printf("%d ",a[i][j]);
     15     }
     16     printf("\n");
     17   }
     18 printf("\n");
     19   return 0;
     20 }

    例二:对前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0:

      1 #include<stdio.h>
      2 int main()
      3 {
      4   int a[3][4]={{1},{2},{5}};
      5   //把前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0。
      6   //如果赋值的数,多于三个,后面的会报错,并且自动不算数。
      7   //如果没有对数组进行赋值,则得出的结果为随机数。
      8   int i,j;
      9   for(i=0;i<3;i++)
     10   {
     11     for(j=0;j<4;j++)
     12     {
     13       printf("%d ",a[i][j]);
     14     }
     15     printf("\n");
     16   }
     17   return 0;
     18 }  
      1 #include<stdio.h>
      2 int main()
      3 {
      4   int a[3][4]={{1},{2},{5}};
      5   //把前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0。
      6   //如果赋值的数,多于三个,后面的会报错,并且自动不算数。
      7   //如果没有对数组进行赋值,则得出的结果为随机数。
      8   int i,j;
      9   for(i=0;i<3;i++)
     10   {
     11     for(j=0;j<4;j++)
     12     {
     13       printf("%d ",a[i][j]);
     14     }
     15     printf("\n");
     16   }
     17   return 0;
     18 }

    例三:指定数组元素,其他元素自动补充为0:

      1 #include<stdio.h>
      2 int main()
      3 {
      4   int a[3][4]={[2][3]=1,[2][1]=8,[1][2]=5};
      5   int i,j;
      6   for(i=0;i<3;i++)
      7   {
      8     for(j=0;j<4;j++)
      9     {
     10       printf("%d ",a[i][j]);
     11     }
     12     printf("\n");
     13   }
     14   return 0;
     15 }

    例四:证明只有第一维可以不写数值:

      1 #include<stdio.h>  
      2 int main()  
      3 {  
      4   int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只有第一维可以不写
      5   int i,j;
      6   for(i=0;i<3;i++)
      7   {
      8     for(j=0;j<4;j++)
      9     {
     10       printf("%d ",a[i][j]);
     11     }
     12     printf("\n");
     13   }
     14   return 0;
     15 }

    C语言是什么

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。

    感谢大家的阅读,以上就是“C语言中的二维数组该怎么理解”的全部内容了,学会的朋友赶紧操作起来吧。相信亿速云小编一定会给大家带来更优质的文章。谢谢大家对亿速云网站的支持!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI