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

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]
如果需要实现这样的功能要怎么写?谢谢
展开
 我来答
不倒翁_白痴
2012-12-08 · TA获得超过283个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:132万
展开全部
warning的原因就是说的:你返回了一个local variable(局部变量)的地址,因为这个局部变量使用的内存,在函数调用结束之后就会被释放掉,所以,如果你在后面的程序里想继续使用这个地址来访问那个ch数组,很可能出现问题,因为那个地址已经不再分配给ch数组了。

修改方法:
1.设置一个全局变量,在函数体内把数组地址赋给这个全局变量,然后返回这个全局变量,这个方法warning是没有了,但是如果你还想用这个全局变量去访问ch数组,问题还是一样的,ch数组已经不存在了

所以,如果你想全局都能使用这个ch数组,就把他设置为全局的吧

2.将数组ch设置为全局
WillzhangTsai
2012-12-08 · TA获得超过780个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:393万
展开全部
你的ch是在test()函数里面定义的。是不可以返回的。
你应该把char ch[2]定义在函数的外边,比如作为cpp的public成员这样子。
或者,你可以试试:在return ch 的ch 前面加上一个&。我觉得应该可以,你试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shiftnature
2012-12-08
知道答主
回答量:20
采纳率:0%
帮助的人:9.1万
展开全部
不能返回数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式