首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数指针回到

2013-09-05 
函数指针返回#includestdio.hint* f(int x){return &x}int main(){int i 5int *p f(i)printf(%d

函数指针返回


#include<stdio.h>

int* f(int x)
{
    return &x;
}

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

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

#include<stdio.h>

int* f(int x)
{
    return &x;
}

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

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

一块内存没人去写,它的值就不变。
[解决办法]
你在int *p = f(i);和printf("%d", *p);之间加一些其它c语句看看结果是什么?有什么效果?


[解决办法]
栈是会被销毁,但是如果那块内存没有被另外的变量占用,那应该还是原来的值吧
[解决办法]
用汇编模式看了下,eax寄存器没有重置,按正常来说是会被销毁的

热点排行