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改成这个编译就出错了 展开
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改成这个编译就出错了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询