读书人

函数指针回到

发布时间: 2013-09-05 16:02:06 作者: rapoo

函数指针返回


#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寄存器没有重置,按正常来说是会被销毁的

读书人网 >C语言

热点推荐