您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 函数指针返回

函数指针返回

来源:网络整理     时间:2016/6/23 21:41:16     关键词:

关于网友提出的“ 函数指针返回”问题疑问,本网通过在网上对“ 函数指针返回”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 函数指针返回
描述:

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:

引用 楼主 l1095260368 的回复:

#include
int* f(int x)
{
    return &x;
}
int main()
{
    int i = 5;
    int *p = f(i);
    printf("%d", *p);
    return 0;
}

代码为什么能够正常输出5;
函数形参x不是在退出函数后被销毁了吗。那指针应该指向的是没有数值的内存。所以会是随即的数才对吧。

一块内存没人去写,它的值就不变。 解决方案4:

你在int *p = f(i);和printf("%d", *p);之间加一些其它c语句看看结果是什么?有什么效果?


以上介绍了“ 函数指针返回”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2015690.html

相关图片

相关文章