猿问

可不可以写成int*& y=x ,怎么都是写的int &y=x,因为我看视频里有些是写的前者

可不可以写成int*& y=x  ,怎么都是写的int &y=x,因为我看视频里有些是写的前者

年轻人3
浏览 1144回答 1
1回答

asd8532

int*&p 是 指针的引用。 他是一个 指针 的 别名 ,一般可以当成 指针 使用。有时候,可以直接他的值,成为其他指针的引用int&*p 是 引用的指针,这个是非法的,指针不能指向引用。引用不具有确定的存储,无法间接访问得到表示引用的存储的左值,所以干脆人为规定禁止构造指向引用的指针类型。#include <iostream> using namespace std; void swap5(int *&a, int *&b){     int tem = *a;     *a = *b;     *b = tem; } int main(){     int a = 1;     int b = 2;     int *aPtr = &a;     int *bPtr = &b;     int *&arPtr = aPtr;     int *&brPtr = bPtr;     swap5(arPtr, brPtr);     cout<<"a = "<<a<<endl;     cout<<"b = "<<b<<endl;     system("pause");     return 0; }int*&  value这样一个声明,我们从最接近value的符号看起,是个&,说明value是一个引用,它是一个什么引用呢?再看*,它是一个指针的引用,即指针的别名,我们用*value就可以访问到实参的值了。所以,其交换函数的内部逻辑跟int *是一样的。
随时随地看视频慕课网APP
我要回答