加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中,如果“int a = 3; int * p =&a;“,那么为什么不允许使用”

发布时间:2020-12-16 09:21:42 所属栏目:百科 来源:网络整理
导读:在C中,如果: int a = 3; int* p = a; 那为什么呢 const int* pp = p; 不允许,但是 const int* const pp = p; 被允许? 解决方法 给定const int * pp = p;,p必须首先隐式转换为const int *.但是转换后的const int *是一个临时的,它不能绑定到非const的lvalue
在C中,如果:

int a = 3; 
int* p = &a;

那为什么呢

const int* &pp = p;

不允许,但是

const int* const &pp = p;

被允许?

解决方法

给定const int *& pp = p;,p必须首先隐式转换为const int *.但是转换后的const int *是一个临时的,它不能绑定到非const的lvalue-reference(比如const int *&).

临时可以绑定到对const的lvalue-reference(比如const int * const&)(和rvalue-reference),所以const int * const& pp = p;工作良好.临时的生命周期延长到参考pp的生命周期.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读