猿问

求教,初学者的一个问题

下列类型声明中,正确的是 A int &a[4]; B int &*p; C int &&q; D int i,*p=&i; 原题就是这样,求解答
祝福9999
浏览 1511回答 2
2回答

onemoo

答案应该是 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),这样写是合法的。

JustWannaHugU

选D,等价于int *p;p =&i;
随时随地看视频慕课网APP
我要回答