📜  引用可以引用 C++ 中的无效位置吗?

📅  最后修改于: 2022-05-13 01:55:32.555000             🧑  作者: Mango

引用可以引用 C++ 中的无效位置吗?

引用变量:您可以在 C++ 中为变量创建第二个名称,您可以使用它来读取或编辑该变量中包含的原始数据。虽然这听起来可能并不吸引人,但声明一个引用并为其分配一个变量允许您将引用视为原始变量,以便访问和修改原始变量的值——即使第二个名称 (参考)在不同的范围内。这意味着如果你让你的函数参数引用,你将能够从本质上改变给函数的数据。这与 C++ 通常的工作方式形成对比,其中函数参数被复制到新变量中。它还有助于节省时间。

在 C++ 中,引用变量比指针更安全,因为引用变量必须被初始化,并且一旦它们被初始化就不能改变它们来引用其他东西。但也有例外情况,我们可以有无效的引用。

1) 在未初始化的指针处引用值

int *ptr;
int &ref = *ptr; // Reference to value at 
                 // some random memory location

2) 返回对局部变量的引用

int& fun()
{
int a = 10;
return a;
}

一旦 fun() 返回,堆栈帧上分配给它的空间将被收回。所以对局部变量的引用是无效的。