为什么我的指针在我取消引用main之后与我自己的自定义函数中取消引用它之后有不同的值?

Oan*_*anh 0 c++ pointers

为什么我的指针在我取消引用main之后与我自己的自定义函数中取消引用它之后有不同的值?

这可能是非常简单的事情,但我无法弄清楚.以下是代码:

int *addNumbers(int a, int b);

int main()
{
    int no1 = 1;
    int no2 = 3;
    int no3 = 8;
    int *answer = &no3;

answer = addNumbers(no1, no2);
std::cout << answer << std::endl;
std::cout << *answer << std::endl;

/* Why does this second cout line not give the same 
answer as the second cout statement
 in the addNumbers function? */

}

int *addNumbers(int a, int b)
{
    int *resultPntr;
    int result = a+b;
    resultPntr = &result;
    std::cout << resultPntr << std::endl;
    std::cout << *resultPntr << std::endl;
    return resultPntr;
}
Run Code Online (Sandbox Code Playgroud)

我以为取消引用resultPntr和answer会给出相同的值?

son*_*yao 8

addNumbers()试图返回一个指向局部变量的指针result,该函数在离开函数时将被销毁.然后answerin main()只是一个悬垂的指针,取消引用它是UB,意味着一切皆有可能.