回 帖 发 新 帖 刷新版面

主题:c语言书上的一个小问题

c语言书上有这样一段话,我感觉有点问题。
int*fun(……)
{int a[n];
……
……
return b;
}
main中有int *p
p=fun();
然后书后面说“函数不应把b的值作为返回值,由于fun执行完之后,系统将释放b所占内存,数组b将不存在,p将不指向任何对象。”如果这样的话,那函数的返回值是什么意思,我纠结了,难道因为b是数组?谁能解释一下,谢谢。(如果这书坑了我,就把它撕了……)

回复列表 (共5个回复)

沙发

麻烦贴下完整代码。。

板凳

没有源码,书上也只是简单的举个例子,然后说了后面那句话

3 楼

楼主很好嘛,尽信书不如无书嘛

4 楼

学过 刻舟求剑 的故事吗,和你这段代码一样

b的值没错,确实指向当初的a[],但a[]已经不存在了

5 楼

这个。。。没有具体事例真不太好说

还有对*fun不是应该返回指针位置吗

我来回复

您尚未登录,请登录后再回复。点此登录或注册