专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

函数返回的局部变量为什么这样就正确?解决办法

发布时间:2011-06-28 16:17:04 文章来源:www.iduyao.cn 采编人员:星星草
函数返回的局部变量为什么这样就正确?
#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();}


------解决方案--------------------
探讨

#include<stdio.h>
#include<malloc.h>
char * a(int x)
{
char * b;
b=(char *)malloc(10*sizeof(char));
b="abc";
return b;
}
main()
{int c=4;
printf("%s",a(c));
getchar();}
那为什么这样就可以呢?

------解决方案--------------------
1。malloc函数返回一个指针,指向的内存在free前可认为有效。堆中对象不是局部对象(自动变量),不自动回收内存。2。字符串常量也不是局部对象,生命周期是到程序结束。3。测试只能证明错误,不能证明正确。所以你的例子不能说明问题,而且楼上指出错误了。4。不要看老谭们的书(应付考试除外)。看C primer
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: