C语言 以下函数为什么会有warning,怎么修正?谢谢

char*test(){charch[2];ch[0]='c';ch[1]='\0';returnch;}warning:functionreturnsaddressof... char* test(){
char ch[2];
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
warning: function returns address of local variable [enabled by default]
如果需要实现这样的功能要怎么写?谢谢
展开
 我来答
hustcslhb
2012-12-06 · TA获得超过802个赞
知道小有建树答主
回答量:492
采纳率:0%
帮助的人:405万
展开全部
错误显示“返回局部变量或临时变量的地址”;因为ch是局部变量,生存周期仅限于函数内部,函数返回后空间是会被释放掉到(分配在栈上)。

修改如下:
char * test (char * ch)
{
ch[0] = 'c';
ch[1] = '\0';
return ch;

}
调用如下
char ch[2];
printf ("%s", test(ch));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寂寞而莫我知也
2012-12-06 · TA获得超过284个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:229万
展开全部
char* test(){
char ch[2];
ch[0] = "c";//这儿必须是双引号。单引号就是字符了,你后面加了结束字符串标志'\0' ,所以你必须加双引号
ch[1] = '\0';
return ch;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wdmmoe
2012-12-06 · TA获得超过153个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:217万
展开全部
方案一:

char* test(){
static char ch[2];
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
将局部变量变成静态

方案二:
char* test(){
char* ch = new char[2];
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
不过调用后要delete
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-06
展开全部
返回局部变量或临时变量的地址;因为ch是局部变量,函数返回后要被释放掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弹指间幸福5
2012-12-06 · 超过30用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:69万
展开全部
应该是ch[2]没有初始化吧。你改为ch[2]={};试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式