关于网友提出的“ 函数指针返回”问题疑问,本网通过在网上对“ 函数指针返回”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 函数指针返回
描述:C函数返回指针
#include
int* f(int x)
{
return &x;
}
int main()
{
int i = 5;
int *p = f(i);
printf("%d", *p);
return 0;
}
代码为什么能够正常输出5;
函数形参x不是在退出函数后被销毁了吗。那指针应该指向的是没有数值的内存。所以会是随即的数才对吧。
解决方案1: 用汇编模式看了下,eax寄存器没有重置,按正常来说是会被销毁的
解决方案2: 栈是会被销毁,但是如果那块内存没有被另外的变量占用,那应该还是原来的值吧
解决方案3:
一块内存没人去写,它的值就不变。
解决方案4: 你在int *p = f(i);和printf("%d", *p);之间加一些其它c语句看看结果是什么?有什么效果?
以上介绍了“ 函数指针返回”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2015690.html