999 C++ 疑难杂症语法,指向引用的指针,指向指针的引用

文章探讨了C++中指针和引用的交互,解释了为什么C++不支持直接指向引用的指针。作者指出虽然可以间接通过指针操作引用,但C++编译器可能出于设计原因禁止这种用法,以避免潜在问题。

指向指针的引用   

 int *&aaaa = pa;// C++优先级 中  * 和 & 是同一个级别的。从右到左,因此,首先是一个引用,其次是一个指针。由于是引用,因此要初始化,且要使用 int *初始化
    *aaaa = 999;
    cout << "a = " << a << " *pa  = " <<*pa << "   *aaaa = " << *aaaa <<endl;

指向引用的指针 -  C++不支持

    //int &*bbbb;//build error 不允许使用指向 引用的指针,从语法上分析: * 和 & 是一个级别的,且是从右到左结合,因此首先是一个 指针,其次是一个 int 引用,但是C++编译器不允许 一个指针只指向引用
    //我们验证一下:分开写是可以的,那么就有一个问题,为什么C++从语法上就不支持 int &*bbbb 这种呢?
    int xxx = 90;
    int * pxxx = &xxx;
    int & yyy = xxx;
    int *ppxxx = &yyy;
    cout << "duandian" << endl;
    //这个从理论上是可以的,目前从网上查到的一些资料,大致的说法为 引用的地址本来就是被引用对象的地址,因此让一个指针 指向引用 ,没有意义。
    //但是为什么没有意义呢?通过指针,去改动引用的 被引用对象应该也可以吧.
    // 这里我的理解是:写C++编译器的那帮牛神不希望你这么干,或者在C++编译器内部有某些语法或者实现,无法解决这么写导致的问题。
    *ppxxx = 888;
    cout << "xxx = " << xxx << "  *pxxx = " << *pxxx << "  yyy = " << yyy << "  *ppxxx = " << *ppxxx << endl;

    yyy = 888888;
    cout << "xxx = " << xxx << "  *pxxx = " << *pxxx << "  yyy = " << yyy << "  *ppxxx = " << *ppxxx << endl;

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值