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

系统环境: 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 的值不能改变。

转载于:https://www.cnblogs.com/Adam-fei/p/7899760.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值