当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 4.12 复习题 第6题 声明并初始化数组

C++ Primer Plus 6th 4.12 复习题 第6题 声明并初始化数组

更新时间:2019-03-02 09:09:04浏览次数:1+次

C++ Primer Plus复习题4.12 第6题  声明并初始化数组

题目:
6.声明一个char的数组,并将其初始化为字符串“cheeseburger”。

答案:
char lunch[13] = "cheeseburger"; // number of characters +1  (字符数要加1)
或者
char lunch[] = "cheeseburger"; // let the compiler count elements(让编译器来计算数组元素个数)

C++技术网辅导详解解答:
    声明和声明并初始化的区别在于,声明完变量就可以了,而声明并初始化则必须在声明的同时赋予一个值。
    数组的声明并初始化和数组的赋值是有区别的。对于int变量来讲,初始化和赋值只是时机的问题,如:

int a=10;//初始化


int a;
a=10;//赋值

    看上去的差别就只有赋值的时机不同而已,所以感觉不出来差异。

    而对于数组来讲,就太明显了。数组的初始化如:

int a[2]={0,1};//正确的初始化
int a[2];
a[2]={0,1};//语法错误的赋值
a={0,1};//语法错误的赋值

    数组的赋值,需要对单个元素一个个的赋值。如下:

a[0]=0;
a[1]=1;

    所以一般我们都会用循环来给数组赋值。所以,如果数组一开始就可以决定其内容,我们都会用初始化来赋值,而不会到后面再赋值。在语法上,初始化数组比循环赋值方便。

    另外要说的是,对于字符数组的初始化,我们可以用下面这样:

char a[3]={'H','i','\0'};

    以上的初始化的方式是针对每一个字符来指定其值。如果这个字符数组是一个字符串,我们一定要在末尾加上'\0'字符或者不加'\0'时需要多留一个字节不赋值而默认为0。

    字符数组一般用来存储字符串,即以'\0'字符结尾的字符数组。为了使用方便,我们一般直接在初始化数组时指定一个字符串来赋值。这样的做法也就是答案里的效果。不过需要注意的是,我们可以指定数组的大小也可以不指定,如果不指定数组大小,则自动根据赋值的字符串的大小来自动确定大小。如果指定大小,则需要注意大小值。初始化为一个字符串,那么数组大小至少要为字符串字符个数+1。因为字符串还隐含了一个不可见的结尾字符'\0',没有这个字符则构不成一个字符串!当然,如果你要多加几个字节行不行呢?当然行啊!如果这个字符数组仅用来存储这个字符串,不会有任何变动了,那多出来的字节就再也用不着了,就浪费了。如果后续你会编辑字符串且不利用其它的数组来临时存储,而且会增长字符串,那么就需要有多余的字节。要不要增加额外的字节,就看具体的使用了哦。