为了账号安全,请及时绑定邮箱和手机立即绑定

求教,初学者的一个问题

求教,初学者的一个问题

C++
祝福9999 2017-04-02 15:31:28
下列类型声明中,正确的是 A int &a[4]; B int &*p; C int &&q; D int i,*p=&i; 原题就是这样,求解答
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

答案应该是 D。

C++ 的引用应该被看作是“别名”,不是对象。

所以

A. int &a[4];,这是想声明一个有 4 个 int 引用的数组,然而引用不是对象,所以没有“引用数组”这东西。

B. int &*p;,这是想声明一个指向引用类型的指针,同样由于引用不是对象,故没有“引用指针”。

C. int &&q;,这个 int && 类型是存在的—— && 是C++11标准新增的右值引用类型,然而引用在定义时必须初始化。这里错在缺少了初值。

D. int i,*p=&i;,这是在一条语句中声明了两个变量,i 是个 int 变量,p 是个 int 指针,且用前面的 i 的地址作初值(也就是让 p 指向 i),这样写是合法的。


查看完整回答
1 反对 回复 2017-04-02
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

选D,等价于int *p;p =&i;
查看完整回答
1 反对 回复 2017-04-02
  • 2 回答
  • 0 关注
  • 1510 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信