卧龙小说网> > > 2.4.2节练习

2.4.2节练习

2.4.2节练习

2.4.2节练习

练习2.27:下面的哪些初始化是合法的?请说明原因。

(a) int i = -1 &r = 0; (b) int *const p2 = &i2;

(c) const int i = -1 &r = 0; (d)const int *const p3 = &i2;

(e) const int *p1 = &i2; (f) const int &const r2;

(g) const int i2 = i &r = i;

出题思路:本题旨在考查常量引用、常量指针和指向变量的指针的初始化方法。

解答:

(a)是非法的,非常量引用r不能引用字面值常量0。

(b)是合法的,p2是一个常量指针,p2的值永不改变,即p2永远指向变量i2。

(c)是合法的,i是一个常量,r是一个常量引用,此时r可以绑定到字面值常量0。

(d)是合法的,p3是一个常量指针,p3的值永不改变,即p3永远指向变量i2;同时p3指向的是常量,即我们不能通过p3改变所指对象的值。

(e)是合法的,p1指向一个常量,即我们不能通过p1改变所指对象的值。

(f)是非法的,引用本身不是对象,因此不能让引用恒定不变。

(g)是合法的,i2是一个常量,r是一个常量引用。

练习2.28:说明下面的这些定义是什么意思,挑出其中不合法的。

(a) int i *const cp; (b) int *p1 *const p2;

(c) const int ic &r = ic; (d) const int *const p3;

(e) const int *p;

出题思路:本题旨在考查常量引用、常量指针和指向常量的指针的定义及区别。

(a)是非法的,cp是一个常量指针,因其值不能被改变,所以必须初始化。

(b)是非法的,p2是一个常量指针,因其值不能被改变,所以必须初始化。

(c)是非法的,ic是一个常量,因其值不能被改变,所以必须初始化。

(d)是非法的,p3是一个常量指针,因其值不能被改变,所以必须初始化;同时p3指向的是常量,即我们不能通过p3改变所指对象的值。

(e)是合法的,但是p没有指向任何实际的对象。

练习2.29:假设已有上一个练习中定义的那些变量,则下面的哪些语句是合法的?请说明原因。

(a) i = ic; (b) p1 = p3; (c) p1 = ⁣

(d) p2 = ⁣ (e) p2 = p1; (f) ic = *p3;

出题思路:本题旨在考查常量引用、常量指针和指向常量的指针的赋值方法。

解答:

(a)是合法的,常量ic的值赋给了非常量i。

(b)是非法的,普通指针p1指向了一个常量,从语法上说,p1的值可以随意改变,显然是不合理的。

(c)是非法的,普通指针P1指向了一个常量,错误情况与上一条类似。

(d)是非法的,p3是一个常量指针,不能被赋值。

(e)是非法的,p2是一个常量指针,不能被赋值。

(f)是非法的,ic是一个常量,不能被赋值。


普通的冒险故事提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。

好书推荐:《我的剧本世界在自主运行》《我是舰娘》《我的师妹是妖女》《交错世界之学院都市》《认清现实后,她们开始追夫火葬场》《好徒儿你就饶了为师伐》

目录