《C++Primer》第2章2.4节习题答案 .pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《C++Primer》第2章2.4节习题答案 2.4 const限定符 练习26:下⾯的哪些句⼦是合法的?如果有不合法的句⼦,请说明为什么? (a) const int buf; (b) int cnt = 0; (c) const int sz = cnt; (d) ++cnt; ++sz; 【解答】 本题的所有语句应该看作是顺序执⾏的,即形如: const int buf; int cnt = 0; const int sz = cnt; ++cnt; ++sz; (a)是⾮法的,const 对象⼀旦创建后其值不不能改变,所以const对象必须初始化。 该句应修改为const int buf = 10。 (b)和(c)是合法的。 (d)是⾮法的,sz是⼀个const对象,其值不能被改变,当然不能执⾏⾃增操作。 练习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)是合法的,p3是⼀个常量,r是⼀个常量引⽤,此时r可以绑定到字⾯值常量0。 (d)是合法的,p3是⼀个常量指针,p3的值永不改变,即p3永元指向变量i2;同时p3指向的是常量,即我们不能通过p3⼼变所指对象的 值。 (e)是合法的,p1指向⼀个常量,即我们不能通过p1改变所指对象的值。 (f)是⾮法的,引⽤本⾝不是对象,因此不能让引⽤恒定不变。 (g)是合法的,i2是⼀个常量,r是⼀个常量引⽤。 练习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)是⾮法的,cp2是⼀个常量指针,因其值不能被改变,所以必须初始化。 (c)是⾮法的,ic是⼀个常量,因其值不能被改变,所以必须初始化。 (d)是⾮法的,p3是⼀个常量指针,因其值不能被改变,所以必须初始化;同时p3指向的是常量,即我们不能通过p3改变所指对象的值。 (e)是合法的,但是p没有指向任何实际的对象。 练习29:假设已有上⼀个练习中定义的那些变量,则下⾯的哪些语名是合法的?请说明原因。 (a) i = ic; (b) p1 = p3; (c) p1 = ic; (d) p3 = ic; (e) p2 = p1; (f) ic = *p3 【解答】 (a)是合法的,常量ic的值赋给了⾮常量i。 (b)是⾮法的,普通指针p1指向了⼀个常量,从语法上说,p1的值可以随意改变,显然是不合理的。 (c)是⾮法的,普通指针p1指向了⼀个常量,错误情况与上⼀条类似。 (d)是⾮法的,p3是⼀个常量指针,不能被赋值。 (e)是⾮法的,p2是⼀个常量指针,不能被赋值。 (f)是⾮法的,ic是⼀个常量,不能被赋值。 练习30:对于下⾯的这些语句,请说明对象被声明成了顶层const还是底层const?。 const int v2 = 0; int v1 = v2; int *p1 = v1, r1 = v1; const int *p2 = v2, *const p3 = i, r2 = v2; 【解答】 v2和p3是顶层const,分别表⽰⼀个整型常量和⼀个整型常量指针;p2和r2是底层const,分别表⽰它们所指(所引⽤)的对象是常量。 练习31:假设已有上⼀个练习所做的那些声明,则下⾯的哪些语句是合法的?请说明顶层const和底层const在每个例⼦有何体现。 r1 = v2; p1 = p2; p2 = p1; p1 = p3; p2 = p3; 【解答】 在执⾏拷贝操作时,顶层const和底层const区别明显。其中,顶层const不受影响, 这是因为

文档评论(0)

. + 关注
官方认证
文档贡献者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体 社旗县清显文具店
IP属地河南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档