【问题标题】:C++ Primer Lippman 5th exercise 2.27 bC++ Primer Lippman 5th 练习 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。如果i2const int 是合法的,如果i2 是非const int 是非法的。

标签: c++


【解决方案1】:

它利用了* 与名称而不是类型一起使用的事实。

上面的问题将i2声明为整数

int* ip, ip2;

不是指针。所以

 int *const p2 = &i2;

p2 被分配了 i2 的地址,一个指针。 除非您尝试更改 p2 的值,否则 p2 的 const 指针不会发挥作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多