C语言中函数返回值是地址的问题!!求帮助!!!

如下图所示;题目大概是输入一个字符串,输出是从第m个字符后的字符。为什么我的字符串在函数里面输出是对的。返回到主函数输出时就错了。... 如下图所示;题目大概是输入一个字符串,输出是从第m个字符后的字符。
为什么我的字符串在函数里面输出是对的。
返回到主函数输出时就错了。
展开
 我来答
kaixingui2012
2015-09-03 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6470万
展开全部
两种改法:
一、 
char * copy( char s[], int m )
{
    int i;
    for( i=0;i<m-1 && s[i]!='\0' ;i++ ) ;
    return &s[i] ;
}
二、
char * copy( char s[], int m )
{
static char str[80]={0} ; //改成静态变量,即可
    int i;
追问
谢谢你了!
然后请问一下为什么改成静态变量就可以了 是什么原理呢?
追答
一般的局部变量,在函数结束后,变量就消失了(生存期问题)
而静态变量,其生存期是程序运行的完整期间,只要程序不结束,它就不会消失!
查阅一下变量的生存期资料,可得详细说明!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式