本文主要是介绍999 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;
}
这篇关于999 C++ 疑难杂症语法,指向引用的指针,指向指针的引用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!