C语言-----二维数组

二维数组的创建,初始化,使用。

(一)二维数组的创建

二维数组定义的一般形式:类型说明符 数组名[常量表达式][常量表达式]

举例如下:

 int a[3][4];

 //定义a为 3*4(3行4列) 的数组。

二位数组又可以看作是一种特殊的一维数组:它的元素又是一个一维数组。

举例如下:

 int a[3][4];
 //可以看作a是一个一维数组,它有3个元素:a[0],a[1],a[2]。
 //每个元素又是一个包含四个元素的一维数组。此时a[0],a[1],a[2]做一维数组名。
 //a[0]——a[0][0],a[0][1],a[0][2],a[0][3]
 //a[1]——a[1][0],a[1][1],a[1][2],a[1][3]
 //a[2]——a[2][0],a[2][1],a[2][2],a[2][3]

二维数组中元素在内存中是连续存放的,元素的排列顺序是按行排放的,即izai内存中先存放第一行的元素,紧接着存放第二行的元素,以此类推…是线性的,不是二维的。

(二)二维数组的初始化

 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 };
    //这两行代码等价
    //结果为:1   2   3   4 
    //       5   6   7   8
    //       9  10  11  12     
    //第1行代码是分行给二位数组赋值。
    //2行代码是将所有数据写在花括号内,按数组元素在内存中的排列顺序对各元素赋值。


  int a[3][4] = { { 1 }, { 2 }, { 3 } };
     //对部分元素赋值。
     //结果为:1   0   0   0
    //        2   0   0   0
    //        3   0   0   0


 int a[3][4] = { { 1 }, { 0, 2 }, { 0, 0, 3 } };
    //对每一行中的部分元素赋值
     //结果为:1   0   0   0
    //        0   2   0   0
    //        0   0   3   0


 int a[3][4] = { { 1 }, { 3, 4 } };
    //只对某几行元素赋初值
     //结果为:1   0   0   0
    //        3   4   0   0
    //        0   0   0   0

注意:在某些情况下行的长度可省略,但是在任何情况下列的长度都不能省略!

  //如果对全部元素都赋初值,则定义数组时对一维的长度可以不指定。
 //下面两行代码等价。
 int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
 int a[ ][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
    //结果为:1   2   3   4 
    //       5   6   7   8
    //       9  10  11  12     
 
 //在定义时也可以只对每行元素都赋初值,此时省略一维的长度。
 int a[ ][4] = { { 1 }, { 2 }, { 3 } };
 //结果为:1   0   0   0
 //       2   0   0   0
 //       3   0   0   0

(三)二维数组的使用

*二维数组也是通过访问的。
*二维数组大小的计算:


代码如下:

int a[3][4] = { 0 };
int sz_i = sizeof(a) / sizeof(a[0]);
int sz_j = sizeof(a[0]) / sizeof(a[0][0]);

二维数组的举例:
(1)举例1

//输入并打印一个二维数组

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][4] = { 0 };
int i, j;
for(i = 0;i < 3;i++)
{
  for(j = 0;j < 4;j++)
  {
     a[i][j] = i+j;
     printf("%d ",a[i][j];
  }
  printf(" \n");
 }
  system("pause");
  return 0;
  }
  

(2)举例2

猜你喜欢

转载自blog.csdn.net/xmfjmcwf/article/details/83000326