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]
如果需要实现这样的功能要怎么写?谢谢 展开
char ch[2];
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
warning: function returns address of local variable [enabled by default]
如果需要实现这样的功能要怎么写?谢谢 展开
6个回答
展开全部
错误显示“返回局部变量或临时变量的地址”;因为ch是局部变量,生存周期仅限于函数内部,函数返回后空间是会被释放掉到(分配在栈上)。
修改如下:
char * test (char * ch)
{
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
调用如下
char ch[2];
printf ("%s", test(ch));
修改如下:
char * test (char * ch)
{
ch[0] = 'c';
ch[1] = '\0';
return ch;
}
调用如下
char ch[2];
printf ("%s", test(ch));
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char* test(){
char ch[2];
ch[0] = "c";//这儿必须是双引号。单引号就是字符了,你后面加了结束字符串标志'\0' ,所以你必须加双引号
ch[1] = '\0';
return ch;
}
char ch[2];
ch[0] = "c";//这儿必须是双引号。单引号就是字符了,你后面加了结束字符串标志'\0' ,所以你必须加双引号
ch[1] = '\0';
return ch;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方案一:
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
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是局部变量,函数返回后要被释放掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是ch[2]没有初始化吧。你改为ch[2]={};试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询