2010-12-06 91 views
0

可能重复:
Difference between pointer variable and reference variable in C++C++引用/指针

我看到这个简单的代码的一天,而且我认为自己与指针初学者,虽然我有大约一年一半的C++经验。反正...

请告诉我

int a = 0; 
int &b = a; 

int a = 0 
int *p = &a; 

很明显的区别,对持有的地址,而B是一个参考,这意味着我可以改变的价值一个与b。但我也可以用p做同样的事情。那么有什么优点或缺点?

回答

2
  • 的引用必须总是被初始化
  • 的引用不能为空
  • 一旦被初始化,参考不能被改变为一个不同的对象的别名。
+0

引用可以为null。 int * a = 0; int&b = * a; – 2010-12-06 20:18:35

0

我认为这取决于您计划如何在程序中使用变量。这两个陈述似乎都做同样的事情(在这个有限的范围内)。

第一种方法似乎是(在我看来)不好的编程习惯,因为在程序后面可能不明显,改变b的值也会改变a的值。在第二种情况下,至少已知p是一个指针,所以你应该期望改变它指向的值所带来的副作用。