获取对函数返回的引用的指针

pointer getting reference to a return of a function

本文关键字:引用 指针 返回 函数 获取      更新时间:2023-10-16

假设我们有一个范围,其中定义了一个变量,并且一个范围更大的指针获取该变量的引用。当我们离开作用域时,知道指针是在外部作用域(例如类成员)中定义的,会发生什么。

{
int a = 6;
pointa = &a; //defined out of this scope
}
//what happens here, pointa is still defined in this scope

编辑:我的问题是关于一个更具体的案例,我找不到答案(不过感觉答案就在悬空指针的解释中)。

假设foo()是一个返回双精度的函数。我试过这个:

int* p;
p = &foo();  

但随后p变为空。你能解释一下这和一个悬空的指针有什么关系吗?

当我们离开作用域时,知道指针是在外部作用域(例如类成员)中定义的,会发生什么。

指针变为悬空指针。

取消对它的引用以访问对象的成员、成员变量以及成员函数,将导致未定义的行为。