关于C语言函数返回指向局部字符数组问题

MyZony 2015-12-05 11:08:30
char *Func1()
{

char p[1024] = "1234567890";
return p;
}

char *Func2()
{

char p[50] = "1234567890";
return p;
}


总所周知这两种写法都是不安全的,理论上来说两个函数返回的都是已经被销毁的数据,不过实际情况并非如此。


想请教各位这是为什么?
...全文
271 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-12-05
  • 打赏
  • 举报
回复
这是一种不确定行为,你输出的值和函数中的一样只能说明他该值还未被其他值覆盖,如果你调用其他函数等,之前指针所指的内存可能就被其他数据覆盖了,所以不要返回局部变量的指针
fefe82 2015-12-05
  • 打赏
  • 举报
回复
错误的程序可以得到任何结果。包括你期望看到的和不期望看到的结果。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧