函数返回的局部变量为什么这样就正确?
#include<stdio.h>
char a(int x)
{
char b[13];
for(x=0;x<10;x++)
b[x]='a'+x;
return b[6];//为什么这里是b,函数类型是char * 型的就不行?两个不都是局部变量吗?不应该都是会错误吗?}
main()
{int c=4;
printf("%c",a(c));
getchar();}
[解决办法]
[解决办法]
1。malloc函数返回一个指针,指向的内存在free前可认为有效。堆中对象不是局部对象(自动变量),不自动回收内存。2。字符串常量也不是局部对象,生命周期是到程序结束。3。测试只能证明错误,不能证明正确。所以你的例子不能说明问题,而且楼上指出错误了。4。不要看老谭们的书(应付考试除外)。看C primer