C语言函数返回值--为什么设置的字符数组大小会出错.

//下面程序不能输出"abcde"......把

#include "stdio.h"
int aa();

main()
{
printf("%s",aa());
}

int aa()
{
char k[5]={"abcde"};
//把5改成21以上 就能正常输出,为什么???

return &k[0];
}
希望大家在编译环境里试验下再回答------主要是讨论下原理和问题所在
别拘束,只当讨论,学习....

kaithinking, mhl1003: 把5改成6是不行的,这就是我奇怪的地方,
BlueWanderer:函数立刻就返回输出一般不会被覆盖的....而且多次试验都存在这种情况....vc中也存在
L_o_o_n_i_e :使用公共变量就非我本意了,
luofan9: 函数类型返回什么都一样,用过c的都知道
Legend258:的代码能返回我要的,我的

如果用作 dll输出函数时候 输出 字符串....该如何用呢
我们继续讨论.....

第1个回答  2009-09-30
因为“abcde”字符串实际上需要至少六个字符大小的空间,因为后面默认的字符串结尾标志是‘\0’,也占据一个字符,所以5个字符是不够的。
第2个回答  2009-09-30
把五给改为六就可以了,因为一个字符串的末尾还需要一个空位字符。
第3个回答  2009-09-30
BlueWanderer 说的很清楚,就是这个原因。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网