怎么了?指针?

bit*_*ore 3 c++

可能重复:
返回本地或临时变量的地址
是否可以在其范围之外访问本地变量的内存?

#include<iostream>
using namespace std;

int *p = NULL;

void 
fun(void){
    int i = 10;
    p = &i;
}

int 
main(void){
    fun();
    cout<<*p<<endl; //#1
    cout<<*p<<endl; //#2
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为#1和#2输出相同,但为什么#1输出10和#2输出一个随机数?

unw*_*ind 8

这只是未定义的行为.在该变量超出范围之后,您正在使用指向局部变量的指针.什么事情都可能发生.

  • @tinybit:你需要意识到,理应"应该"发生什么是毫无意义的.这是**未定义的行为**. (2认同)