版本1给出了段错误,但是当我运行版本2时,它工作正常。直接返回地址时出现分段错误,但通过指针返回时没有错误
为什么?
main()
{
int *p;
p=fun();
print p;
print *p
}
//version 1 gives segmentation fault
int *fun()
{
int i=20;
return &i
}
//version 2 runs fine
int *fun()
{
int i=20;
int *ptr=&i;
return ptr;
}
那是什么语言?什么是'打印'?正如所写的,它显然不是C,尽管它与它相似。 –
你不能返回指向局部变量的指针。它的结果是UB – pm100
注意:'C'标记是由原始海报以外的人添加的。 –