C++ c++;引用/指针
可能重复:C++ c++;引用/指针,c++,pointers,reference,C++,Pointers,Reference,可能重复: 前几天我看到了这个简单的代码,我认为自己是一个初学者,虽然我有大约一年半的C++经验。无论如何 两者之间有什么区别 int a = 0; int &b = a; 及 很明显,p持有a的地址,但是b是a的引用,这意味着我可以用b改变a的值。但我也可以用p做同样的事情。那么优势和劣势是什么呢 必须始终初始化引用 引用不能为null 初始化后,引用不能更改为其他对象的别名 我认为这取决于您计划如何在程序中使用这些变量。这两个语句似乎做了相同的事情(在这个有限的范围内) 第
前几天我看到了这个简单的代码,我认为自己是一个初学者,虽然我有大约一年半的C++经验。无论如何 两者之间有什么区别
int a = 0;
int &b = a;
及
很明显,p持有a的地址,但是b是a的引用,这意味着我可以用b改变a的值。但我也可以用p做同样的事情。那么优势和劣势是什么呢 - 必须始终初始化引用
- 引用不能为null
- 初始化后,引用不能更改为其他对象的别名
第一种方法(在我看来)似乎是糟糕的编程实践,因为在程序的后期,改变b的值也会改变a的值可能并不明显。在第二种情况下,至少我们知道p是一个指针,因此您应该预料到更改它所指向的值所带来的副作用。引用可以为null。int*a=0;int&b=*a;如果这样说,引用也可以引用无效对象。但是不能初始化int&b=NULL@Benoit:引用不能为空。8.3.2/4:“引用应初始化为引用有效的对象或函数。[…]定义良好的程序中不能存在空引用”
int a = 0
int *p = &a;