C++ Primer Lippman 5th 练习 2.27 b
Posted
技术标签:
【中文标题】C++ Primer Lippman 5th 练习 2.27 b【英文标题】:C++ Primer Lippman 5th exercise 2.27 b 【发布时间】:2017-06-05 22:17:16 【问题描述】:C++ 入门练习 2.27 第 5 版。 练习:以下哪些初始化是合法的?解释原因。
(b)int *const p2 = &i2;
根据以下规定,这是合法的: https://github.com/Mooophy/Cpp-Primer/tree/master/ch02#exercise-227
我没有看到i2
的声明位置?
(我也看过勘误表。)
【问题讨论】:
p2 被声明为指向整数的const
指针,并使用i2
的地址进行初始化
您的参考资料显示了i2
的声明在 p2
的声明之后,但这当然没有帮助。如果没有看到书中的练习(我没有),就不可能说出来。
@Zakir:是的,但我们不知道i2
是什么(除非它指的是在p2
声明之后 显示的声明)。更正:p2
被声明为指向const
int
的指针;指针不是const
。如果i2
是const int
是合法的,如果i2
是非const
int
是非法的。
【参考方案1】:
它利用了*
与名称而不是类型一起使用的事实。
上面的问题将i2声明为整数
int* ip, ip2;
不是指针。所以
int *const p2 = &i2;
p2 被分配了 i2 的地址,一个指针。 除非您尝试更改 p2 的值,否则 p2 的 const 指针不会发挥作用。
【讨论】:
以上是关于C++ Primer Lippman 5th 练习 2.27 b的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 18 大型程序工具)使用命名空间成员