C语言返回指针的函数的疑问

#include<stdio.h>void*f(){void*c;inti=9;c=(void*)&i;returnc;}intmain(intargc,charcons... #include <stdio.h>

void * f()
{
void * c;
int i=9;
c=(void *)&i;
return c;
}
int main(int argc, char const *argv[])
{

printf("%d\n",*(int *)f());
return 0;
}
上述函数运行结果是9.

f函数运行完i不是释放了么,那c就变成野指针了。但是结果为什么不会是段错误呢?
void * f()
{
char c[10];
return c;
}

将f改成这个编译就出错了
展开
 我来答
空号一号
2014-10-25 · TA获得超过3845个赞
知道大有可为答主
回答量:1495
采纳率:0%
帮助的人:1611万
展开全部
c确实是野指针,于是printf会产生不可预测的行为。没遇到段错误只是你运气好。

改掉f之后…………一时看不出哪里有问题,请贴错误消息。
更多追问追答
追问
错误提示不能返回一个局部变量
追答
额………………对了你返回的c没有转换成(void *)呀,是不是这个问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式