可能是重复问题:
C++中指针变量和引用变量的区别是什么?
例如,我有两个执行相同操作的函数:
int func(int &a)
{
return a+1;
}
and
int func2(int *a)
{
return *a+1;
}
使用func而不是func2有什么优势,当调用这些函数时?
可能是重复问题:
C++中指针变量和引用变量的区别是什么?
例如,我有两个执行相同操作的函数:
int func(int &a)
{
return a+1;
}
and
int func2(int *a)
{
return *a+1;
}
这两者都可能是优点或缺点,具体情况而定。
null
引用是未定义行为。 - Sergey KalinichenkoNULL
,因为标准是这样规定的,任何其他行为都超出了宇宙的范围。你不这么认为吗? - Seth Carnegie你的两个函数都是错误的。因为它们不修改传入的参数,所以应该将它们作为const参数传递,像这样:
int func(const int &a)
{
return a+1;
}
int func2(const int *a)
{
return *a+1;
}
func(10);
func(func(func(10)));
int func2(int *a = nullptr);
在您的简单情况下可能不起作用,但在许多其他情况下会起作用。
指针也可以更容易地用于其他事情,比如存储在列表中、类型转换等等。
是的,引用不能被重新分配。