C++程序设计 湖南大学 杜四春、银红霞 512一维数组的初始化 在定义数组时对其中的全部或部分指定初始值,这 称为数组的初始化。只有存储类别为静态的或外部的数 组才可以进行初始化。初始化的语法格式为: 类型数组名[数组范围]={值1,值2,…,值n} 例如:对在5.51小节中定义的数组a进行初始化 char a[5]={′a′,b′,′c′rd′r′e}; 或 char a[]={a′rb′,′c′,"d,e′};
C++程序设计 湖南大学 杜四春、银红霞 5.1.2 一维数组的初始化 在定义数组时对其中的全部或部分指定初始值,这 称为数组的初始化。只有存储类别为静态的或外部的数 组才可以进行初始化。初始化的语法格式为: 类型 数组名[ 数组范围 ]={值1,值2,…,值n} 例如:对在5.5.1小节中定义的数组a进行初始化。 char a[5]={’a’,’b’,’c’,’d’,’e’}; 或: char a[ ]={’a’,’b’,’c’,’d’,’e’};
C++程序设计 湖南大学 杜四春、银红霞 在对数组初始化时,也可以只对数组中的部分元 素指定初始值。也即,初始化值的个数可以少于或等 于数组定义的元素的个数,但不可以多于数组元素的 个数,否则会引起编译错误。 当初始化值的个数少于数组元素个数时,前面的 元素按顺序初始化相应的值,后面不足的部分由系统 自动初始化为零(对数值数组)或空字符“(0(对字 符数组)
C++程序设计 湖南大学 杜四春、银红霞 在对数组初始化时,也可以只对数组中的部分元 素指定初始值。也即,初始化值的个数可以少于或等 于数组定义的元素的个数,但不可以多于数组元素的 个数,否则会引起编译错误。 当初始化值的个数少于数组元素个数时,前面的 元素按顺序初始化相应的值,后面不足的部分由系统 自动初始化为零(对数值数组)或空字符‘\0’(对字 符数组)
C++程序设计 湖南大学 杜四春、银红霞 例如: intC[5]={1,2}; 定义整型数组C有5个元素,但只初始化前两个元 素:c[0]=1,c[1]=2。对于后面的三个元素没有定义 初始值,此时由系统自动给它们赋0。 数组长度与初始化元素的个数不相等时,数组 长度不能省去不写,如上例不能写为: intc[]={1,2}; 否则编译器会认为数组C只有2个元素而不是5个元 素
C++程序设计 湖南大学 杜四春、银红霞 例如: int c[5]={1,2}; 定义整型数组c有5个元素,但只初始化前两个元 素:c[0]=1,c[1]=2。对于后面的三个元素没有定义 初始值,此时由系统自动给它们赋0。 当数组长度与初始化元素的个数不相等时,数组 长度不能省去不写,如上例不能写为: int c[ ]={1,2}; 否则编译器会认为数组c只有2个元素而不是5个元 素
C++程序设计 湖南大学 杜四春、银红霞 对于字符型数组的初始化,除了上面介绍的将数 组中的元素一个一个赋值为字符的方式外,还可以有 另外一种方式,即将整个字符型数组一次性赋值为 个字符串,此时花括号可以省略。例如,下面三种初 始化赋值方式是等价的: char d[6}={nh,e',1',1,"o3,03} char d[6=hello) char d[6=hello 后两种方法比较符合用户的习惯
C++程序设计 湖南大学 杜四春、银红霞 对于字符型数组的初始化,除了上面介绍的将数 组中的元素一个一个赋值为字符的方式外,还可以有 另外一种方式,即将整个字符型数组一次性赋值为一 个字符串,此时花括号可以省略。例如,下面三种初 始化赋值方式是等价的: char d[6]={ ’h’ , ’e’ , ’l’ , ’l’, ’o’ , ’\0’ }; char d[6]={”hello”}; char d[6]=”hello”; 后两种方法比较符合用户的习惯
C++程序设计 湖南大学 杜四春、银红霞 要注意的是:单个字符用单括号括起来,而字符 串用双括号括起来,组成字符串的字符除显示给出的 外,还包括结尾处标识字符串结束的符号“02。所以 上例中的字符串“ hello实际上包含6个字符:“h, e’,‘1,(1,“o,‘0。如果将上例定义成 如下形式就错了: char d5=hello 或 char d[]hello?) 此时,最后一个字符“03未能放入d数组中,而是 存放到d数组之后的存储单元中。这种错误编译器检查 不出来,但由于改写了数组空间以外的内存单元,就 可能会破坏其他数据区或程序本身。在用户编写程序 时,一定要注意避免这样的情况发生
C++程序设计 湖南大学 杜四春、银红霞 要注意的是:单个字符用单括号括起来,而字符 串用双括号括起来,组成字符串的字符除显示给出的 外,还包括结尾处标识字符串结束的符号‘\0’ 。所以 上例中的字符串“hello”实际上包含6个字符:‘h’ , ‘ e’ , ‘l’ , ‘l’ , ‘ o’ , ‘\0’ 。如果将上例定义成 如下形式就错了: char d[5]=”hello”; 或 char d[5]={”hello”}; 此时,最后一个字符‘\0’未能放入d数组中,而是 存放到d数组之后的存储单元中。这种错误编译器检查 不出来,但由于改写了数组空间以外的内存单元,就 可能会破坏其他数据区或程序本身。在用户编写程序 时,一定要注意避免这样的情况发生