假设get_size 是一个没有参数并返回int 值的函数,下列哪些定义是非法的? 为什么?
unsigned buf_size = 1024
(a) int ia[buf_size]; (b) int ia[get_size()]; (c) int ia[4*7-14]; (d) char st[11] = "fundamental"
【解答】
(a)非法,buf_size 是一个变量,不能用于定义数组的维数(维长度)。(b)非法,get_size()是函数调用,不是常量表达式,不能用于定义数组的维数 (维长度)。
(d)非法,存放字符串"fundamental"的数组必须有12 个元素,st 只有11 个元 素。
习题4.2
列数组的值是什么?
string sa[10];
int ia[10]; int main(){ string sa2[10]; int ia2[10]; }
【解答】
sa 和sa2 为元素类型为string 的数组,自动调用string 类的默认构造函数将
各元素初始化为空字符串;ia 为在函数体外定义的内置数组,各元素初始化为
0;ia2 为在函数体内定义的内置数组,各元素未初始化,其值不确定。
习题4.3
下列哪些定义是错误的?
(a) int ia[7] = {0, 1, 1, 2, 3, 5, 8};
(b) vector<int> ivec = {0, 1, 1, 2, 3, 5, 8}; (c) int ia2[] = ia; (d) int ia3[] = ivec;
【解答】
(b)错误。vector 对象不能用这种方式进行初始化。 (c)错误。不能用一个数组来初始化另一个数组。 (d)错误。不能用vector 对象来初始化数组。
习题4.4
如何初始化数组的一