指针使用指针给出意想不到的结果

Arv*_*put -1 c pointers

为什么印刷第一印刷声明main()11?

#include<stdio.h>
void foo(int ** p){
    int j = 11;
    *p = &j;
    printf("%d ", **p);        //Printing 11
}

int main(){
    int i = 10;
    int *p = &i;
    foo(&p);    
    printf("%d ", *p);          //Printing 11
    printf("%d ", *p);          //Printing Random value
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 6

里面foo(),你分配一个自动局部变量的地址j*p.后foo()已经完成执行,j已不并因此存在,则使用(derererencing)p此外,在main()调用未定义的行为.

现在,UB的输出是未定义的.