《C++ Primer》第五版课后习题解答_第二章(3)(21-29)

来源:互联网 发布:吉大动物医学就业知乎 编辑:程序博客网 时间:2024/06/07 09:12

系统环境: windows 10 1703

编译环境:Visual studio 2017


2.21

(a) 非法,指针与对象数据类型应相同;

(b) 非法,不能把 int 变量直接赋给指针,即使 int 变量的值恰好是零也不行;

(c) 合法,ip 存放着 i 的地址。


2.22

if (p) 当 p 不是空指针时,执行 if 中的语句;

if (*p) 当 p 指向地址所保存的值不是0时,执行 if 中的语句。


2.23

(试图从网上查资料,未果,大家的解释看不懂。标注一下,学完了回头看。给定一个指针,如何判断这个指针是否已经指向一个合法的对象?)


2.24

因为 void 类型的指针可以存放任意对象的地址,所以 p 合法;

lp 的类型和 i 的类型不同,不能赋值,故 lp 非法。


2.25

(a)

ip: int 类型的指针,未初始化

i: int 类型的变量

r: int 类型的引用

(b)

i: int 类型的变量

ip: int 类型的空指针

(c)

ip: int 类型的指针

ip2: int 类型的变量


2.26

(a) 不合法,const 变量定义时必须初始化;

(b) 合法;

(c) 合法,const 变量 sz 初始化为 int 变量 cnt 的值;

(d) ++cnt 合法;

     ++sz 不合法,const 对象不能改变其值。


2.27

(a) 不合法,引用的初始化必须是对象;

(b) 合法,指针 p2 将一直指向了 i2;

(c) 不合法,r 是常量引用 //注意!

(d) 合法,p3 是指向常量对象 i2 的常量指针;

(e) 合法,p1 是指向常量对象 i2 的指针;

(f) 不合法,const 是关键字,不能作为引用的标识符;

(g) 合法,i2 被赋给了 i 的值,r 绑定了 i。

【总觉得这道题出得不好,没有上下文,不能判断各种变量名引用名与其是否已初始化】


2.28

(a) 不合法,int 型变量 i,int 型常量指针 cp 必须初始化;

(b) 不合法,int 型指针p1,int 型常量指针 p2 必须初始化;

(c) 不合法,变量引用 r 绑定了常量 ic;

(d) 不合法,指向常量对象的常量指针 p3 必须初始化;

(e) 合法,指向常量对象的指针 p。

//所有常量必须初始化,不管是数值常量还是常量指针。


2.29

(a) 合法 常量对象 ic 的值复制给了 int 型变量 i;

(b) 合法,把 p3 指向对象的地址赋给 p1;

(c) 不合法,把常量对象 ic 的地址赋给了非指向常量的指针;

(d) 合法;

(e) 不合法,常量指针 p2 指向的对象不能改变;

(f) 不合法,常量对象 ic 的值不能改变。

阅读全文
0 0