c/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 }    

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注<计算机技术网(www.ctvol.com)!!>的更多内容!   

    需要了解更多c/c++开发分享从头学习C语言之二维数组,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

    本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

    ctvol管理联系方式QQ:251552304

    本文章地址:https://www.ctvol.com/c-cdevelopment/1039713.html

    (0)
    上一篇 2022年1月27日
    下一篇 2022年1月27日

    精彩推荐