数组的部分练习

3.27:假设txt_size是一个无参数的函数,它的返回值是int。请回答下列哪个定义是非法的?为什么?

unsigned buf_size=1024;

(a)int ia[buf_size];  (b)int ia[4*7-14];

(c)int ia[txt_size()];  (d)char st[11]=" fundamental ";

a)非法定义。buf_size不是常量表达式。

b)合法。

c)非法定义。txt_size没有被定义为constexpr。

d)非法定义。没有空间可以存放结尾空字符。

3.28:下列数组中元素的值是什么?

string sa[10];  
//大小为10的string类型的数组,其中元素的值均被初始化为空串
int ia[10];    
//大小为10的int类型的数组,其中元素的值均被初始化为0
int main()
{
    
    
  string sa2[10];  
//大小为10的string类型的数组,其中元素的值被初始化为空串,string类本身接受
//无参数的初始化,所以函数体内外都被初始化为空串
  int   ia2[10];  
//大小为10的int类型的数组,非法操作,其值是未定义的值。
//其中元素的值如果被拷贝或者直接用来输出,都将会是未定义的操作。
}

3.29:相比于vector来说,数组有哪些缺点,请列举一些。

1)数组的大小是固定的,不能动态地增长。

2)由于数组的大小固定,所以容易造成内存的浪费。

3)获取数组大小时不方便。

猜你喜欢

转载自blog.csdn.net/Jormungand_V/article/details/113350920