C语言中函数返回值是地址的问题!!求帮助!!!
如下图所示;题目大概是输入一个字符串,输出是从第m个字符后的字符。为什么我的字符串在函数里面输出是对的。返回到主函数输出时就错了。...
如下图所示;题目大概是输入一个字符串,输出是从第m个字符后的字符。
为什么我的字符串在函数里面输出是对的。
返回到主函数输出时就错了。 展开
为什么我的字符串在函数里面输出是对的。
返回到主函数输出时就错了。 展开
1个回答
展开全部
两种改法:
一、
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;
追问
谢谢你了!
然后请问一下为什么改成静态变量就可以了 是什么原理呢?
追答
一般的局部变量,在函数结束后,变量就消失了(生存期问题)
而静态变量,其生存期是程序运行的完整期间,只要程序不结束,它就不会消失!
查阅一下变量的生存期资料,可得详细说明!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询