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

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

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

C++
年轻人3 2016-05-25 17:39:47
可不可以写成int*& y=x  ,怎么都是写的int &y=x,因为我看视频里有些是写的前者
查看完整描述

1 回答

?
asd8532

TA贡献143条经验 获得超187个赞

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 *是一样的。

查看完整回答
1 反对 回复 2016-05-25
  • 1 回答
  • 0 关注
  • 1143 浏览

添加回答

举报

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