C语言,第1张

C语言,第2张

5.4.1数组初始化
C语言允许在描述时初始化全局数组和静态局部数组,但不允许初始化非静态局部数组。
与其他变量类似,数组初始化的一般形式如下:
类型说明符array _ name [size 1]...[sizen]= { value-list };
值表是用逗号分隔的常数表。这些常数的类型与类型描述兼容。第一个常数存储在数组的第一个单元格中,第二个常数存储在第二个单元格中,依此类推。注意,括号“}”后面要加一个分号。
初始化下列1个0元素整数数组之一以加载数字1到10:
int I [10] = {1,2,3,4,5,6,7,8,9,1 0 };
这意味着i [0]的值是1,而i [9]的值是1 0。
存储字符串的字符数组的初始化可以采取以下简化形式:
Chararray _ name[size]= " sing ";
例如,下面的代码片段将s初始化为“h e l l o”。
char s[6]= " hello ";
上面的代码与下面的代码产生相同的结果:
char s[6]={'h ',' e ',' l ',' l ',' \ o ' };
因为C语言中的所有字符串都以空( N U L L)字符结尾,所以请确保定义的数组足够长,可以容纳空字符。这就是为什么h e l l o只有5个字符,而S必须有6个字符长。使用字符串常量时,编译器会自动在末尾添加空。
多维数组的初始化方式与一维数组相同。例如,下面的公式将s q r s从1初始化为1 0以及它们各自的平方。
int sqrs[10][2]={
1,1,
2,4,
3,9,
4,1 6,
5,2 5,
6,3 6,
7,4 9,
8,6 4,
9,8 1,
1 0,1 0 0,
};
5.4.2变长数组的初始化
假设数组初始化会建立以下错误信息表:
char E1[12]= " read error \ n ";
char e2[13] = "写入错误\ n ";
char e3[18] = "无法打开文件\ n ";
可想而知,手动计算每条消息的字符数来确定数组的长度会有多麻烦。使用变长数组初始化方法可以使C自动计算数组的长度。变长数组初始化就是让C编译器自动构建一个足够大的,长度不指定的数组来存储初始化数据。用这种方法,上面的信息表就变成:
char E1[]= " read error \ n ";
char e2[] = "写入错误\ n ";
char e3[] = "无法打开文件\ n ";
给定上面的初始化,下面的语句printf("%s的长度为%d\,n"e2,si z e o f(E2));
会打印出来:
WRITE ERROR
的长度为13
除了减少麻烦,应用变长数组初始化使程序员可以修改任何信息,而不用担心随时可能出现的计算错误。
变长数组的初始化方法不限于一维数组。但是,在初始化多维数组时,需要指定除第一维以外的其他维的长度,这样编译器才能正确检索数组。方法类似于数组形式的参数描述。这样就可以建立变长表,编译器自动为其分配存储空空间。比如下面用变长数组初始化定义数组S Q R S:
int SQRS[][2]= {
1,1,
2,4,
3,9,
4,16,

8,6 4,
9,8 1,
1 0,1 0
};
相对于定长数组的初始化,这种描述的好处是可以在不改变数组各维长度的情况下,随时增加或缩短表的长度。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情