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]
如果需要实现这样的功能要怎么写?谢谢 展开
char ch[2];
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
warning: function returns address of local variable [enabled by default]
如果需要实现这样的功能要怎么写?谢谢 展开
3个回答
展开全部
warning的原因就是说的:你返回了一个local variable(局部变量)的地址,因为这个局部变量使用的内存,在函数调用结束之后就会被释放掉,所以,如果你在后面的程序里想继续使用这个地址来访问那个ch数组,很可能出现问题,因为那个地址已经不再分配给ch数组了。
修改方法:
1.设置一个全局变量,在函数体内把数组地址赋给这个全局变量,然后返回这个全局变量,这个方法warning是没有了,但是如果你还想用这个全局变量去访问ch数组,问题还是一样的,ch数组已经不存在了
所以,如果你想全局都能使用这个ch数组,就把他设置为全局的吧
2.将数组ch设置为全局
修改方法:
1.设置一个全局变量,在函数体内把数组地址赋给这个全局变量,然后返回这个全局变量,这个方法warning是没有了,但是如果你还想用这个全局变量去访问ch数组,问题还是一样的,ch数组已经不存在了
所以,如果你想全局都能使用这个ch数组,就把他设置为全局的吧
2.将数组ch设置为全局
展开全部
你的ch是在test()函数里面定义的。是不可以返回的。
你应该把char ch[2]定义在函数的外边,比如作为cpp的public成员这样子。
或者,你可以试试:在return ch 的ch 前面加上一个&。我觉得应该可以,你试试。
你应该把char ch[2]定义在函数的外边,比如作为cpp的public成员这样子。
或者,你可以试试:在return ch 的ch 前面加上一个&。我觉得应该可以,你试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询