(33)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第八节
来源:互联网 发布:python 储存空间 编辑:程序博客网 时间:2024/05/29 03:16
数组的初始化
C/C++经常在声明数组的同时对数组进行初始化.数组的初始化类似于其它变量.如下:
type_specifier array_name[size1]...[sizeN] = {value_list};
value_list是用逗号格开的一列数值,它们的数据类型要与type_specifier兼容.第一个数值对应数组的第一个元素,依此类推.注意在}后面还有有分号.
下面的例子中对一个含有10个元素的整型数组进行了初始化.
int i[10] = {1,2,3,4,5,6,7,8,9,10};
这里i[0]将会赋值为1,依次,i[9]将会赋值为10.
字符数组有一种简易的赋值方式:
char array_name[size] = "string";
例如下面的例子中,数组将用这种方式初始化赋值为短语"I like C++".
char str[11] = "I like C++";
等价于:
char str[11] = {'I',' ','l','i','k','e',' ','C','+','+','/0'};
因为这种字符串以null结尾,所以必须确保数组的长度能够顾及到null的位置.这个数组的长度是11,尽管字符串"I like C++"的长度仅仅是10.当使用字符串常量的时候,编译器自动在常量后面加上空字符.
多维数组的初始化和一维数组类似.例如,下面的程序把二维数组sqrs初始化为1到10以及它们的平方.
int sqrs[10][2] = {
1,1,
2,4,
3,9,
4,16,
5,25,
6,36,
7,49,
8,64,
9,81,
10,100
};
当初始化多维数组的时候,可以在每一维的初始值上加上花括号.这叫做子分组.前面的程序可以写成如下形式:
int sqrs[10][2] = {
{1,1},
{2,4},
{3,9},
{4,16},
{5,25},
{6,36},
{7,49},
{8,64},
{9,81},
{10,100}
};
在使用分组的时候,如果没有对一个分组提供足够的初始值,剩余的成员将自动初始化为0.
未定义大小的数组的初始化
假设我们准备使用数组定义一个错误消息表,就像下面一样:
char e1[12] = "Read error/n";
char e2[13] = "Write error/n";
char e3[18] = "Cannot open file/n";
正如你所猜想的,对每一个数组都要人工估计它们的长度是非常单调和乏味的事情.幸运的是,这个工作可以由编译器自动完成.如果在一个数组初始化的语句中,数组的长度未被指定,编译器会自动计算数组的长度,让它的大小刚好能存下所有的初始化数值.这就是未定义大小的数组.用这种方法,错误消息表可以定义如下:
char e1[] = "Read error/n";
char e2[] = "Write error/n";
char e3[] = "Cannot open file/n";
除了减少乏味的人工计算大小之外,未定义大小的数组还可以允许任意改变数组存储的消息字符串,不必担心长度不正确.未定义大小的数组初始化不仅仅局限于一位数组.对于多维数组来说,最左边的索引大小也可以是未定义的.用这种方式,可以定义各种长度的表,编译器会自动分配足够的空间来存储这个表.例如,使用未定义大小的方式来声明二维数组:
int sqrs[][2] = {
{1,1},
{2,4},
{3,9},
{4,16},
{5,25},
{6,36},
{7,49},
{8,64},
{9,81},
{10,100}
};
这种不定长的数组声明比起定长的具有的优势是,我们可以加上或者缩短表的长度,而用不着专门改变数组的尺寸.
- (33)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第八节
- (28)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第三节
- (30)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第五节
- (29)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第四节
- (26)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第一节
- (27)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第二节
- (31)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第六节
- (32)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第七节
- (34)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第九节
- (15)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第七、八节
- (12)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第四节
- (23)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第四节
- (11)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第三节
- (13)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第五节
- (21)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第三节(1)
- (22)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第三节(2)
- (24)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第五节
- (37)'c++:COMPLETE REFERENCE' 第一部分 第五章(指针) 第三节
- Struts Validator验证器使用指南
- 博客正式开始更新,新的奋斗也已经开始!
- 执行.aspx文件出错:由于无法创建应用程序域,因此未能执行请求。
- 如何删除默认表空间
- EMS ALL 2006 - 12 programs
- (33)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第八节
- The Art of Computer Virus Research and Defense
- 视频转换 mpg to swf
- RUP2003到RUP7.0-嫁入豪门的第一次变身
- 关于一个存储过程的条件表达式
- 这是一篇我在.net版发表的文章,调查一下程序员和美工是否在一个办公室工作
- 今天将部了CSDN BLOG上的私人日志搬家
- C#程序实现动态调用DLL的研究
- Rapidup 1.3.2 VIP Version - uploader for 22 free file hosts - 100% working 2007