C语言 二维数组元素的初始化
同一维数组一样,也可以在定义二维数组时对二维数组进行初始化。对二维数组初始化有以下几种形式:
(1)分行对二维数组元素赋初值 初始化形式为:
类型标识符 数组名[行常量表达式][列常置表达式]={{第0行初值表},{第1行初值表}……{最后1行初值表}};
例如:
int a[3][4]=[1,2,3,4}.{5,6,7,8},{9,10,11,12}};
这种初始化形式非常直观,赋值规则是:将“第0行初值表”中的数据,依次赋给第0行中各元素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类推。
(2)按二维数组在内存中的排列顺序给各元素赋初值初始化形式为:
类型标识符 数组名[行常置表达式][列常置表达式]={初值表};
例如:
int a[3] [4]={1,2,3,4,5,6,7,8,9,10,11.12};
因为二维数组在内存中是按行依次存放的,所以赋值规则为:按二维数组在内存中的排列顺序,将初值表中的数据,依次赋给各元素。以数组a[3][4]为例,选取前4个数据,赋给第一行的四个元素;依次再选取4个数据,赋给第二行的四个元素,以此类推。
这种初始化形式的效果与第一种相同,但第一种更直观一些,也不容易出现多写、少写初值数据的 情况。
(3)对每行的部分元素赋初值
初始化形式与第一种相似,但可以不给全部元素赋初值。例如:
mt a[3][4]-{{l}.{0.3),C8}};
初始化后数组中各元素的值为:
第一行: 1000
第二行: 0300
第三行: 8000
这种形式对非0元素较少时比较方便,不必将所有的零都写出,只需说明必要的数据即可。
(4)如果对全部元素都赋初值,则定义时“行常量表达式”可以省略。但“列常量表达式”不能省略。系统会根据给出的初值总数和列数计算出行数。所以以上三种初始化形式,可以以下述形式出现:
int a[ ][4]-{{l,2,3,4J.{5,6,7,8}.{9,10,11,12}};
int a[ ][4]-{1.2,3,4.5,6.7.8.9.10.11.12};
int a[ ][4]-{{l},{0,3},{8}};
点击加载更多评论>>