【问题标题】:Assigning a pointer variable to a const int in C++?在 C++ 中将指针变量分配给 const int?
【发布时间】:2010-05-12 23:54:26
【问题描述】:

我想知道是否有人可以向我解释以下内容:如果我写

int i = 0;
float* pf = i;

我得到一个编译错误(gcc 4.2.1):

error: invalid conversion from ‘int’ to ‘float*’

有道理——它们显然是两种完全不同的类型。但是如果我写

const int i = 0;
float* pf = i;

它编译没有错误。为什么'const'应该在作业的右侧有所作为? 'const' 关键字的想法难道不是能够对常量值实施类型约束吗?

我能想出的任何解释都让人感觉有些虚假。而且我的任何解释都没有解释这个事实

const int i = 1;
float* pf = i;

编译失败。谁能解释一下?

【问题讨论】:

    标签: c++ pointers constants


    【解决方案1】:

    您的第二个示例恰好包含在 §4.10/1 (C++03) 中指定的转换规则中:

    空指针常量是整数类型的整数常量表达式 (5.19) 右值,其计算结果为零。空指针常量可以转换为指针类型;结果是该类型的空指针值,并且可以与指向对象的指针或指向函数类型的指针的所有其他值区分开来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2014-08-23
      • 2021-08-25
      相关资源
      最近更新 更多