返回值是什么?为什么?

m0_53683570 2021-05-09 11:40:30
最后不是return s2吗?不应该只是返回数组s2[0]的值吗? 。。。到底是我哪里搞错了
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aguang 2021-05-10
  • 打赏
  • 举报
回复
忽视了, 应该设置变量保存初始地址
自信男孩 2021-05-10
  • 打赏
  • 举报
回复
引用 3 楼 aguang 的回复:
char *mystrcpy(char *s,const char *t)
{
while (*s++=*t++);
*s='\0';
return s;
}

返回字符串末尾地址?
自信男孩 2021-05-10
  • 打赏
  • 举报
回复
返回值是目的串的地址,这个函数用于字符串拷贝,将源串拷贝到目的串(那个参数是目的串地址可以自由指定),可以通过两种方式获取目的串的地址,一个是参数,再一个就是这个返回值。

楼主写的不对,应该返回s1。另外,既然是所有都拷贝,因此,不需要用两个循环变量,用一个即可,或者一个也不用,如下供参考~

char *mystrcpy(char *dst, const char *src)
{
char *tmp = dst;

while (*src)
*dst++ = *src++;
*dst = 0; //'\0'

return tmp;
}
aguang 2021-05-10
  • 打赏
  • 举报
回复
char *mystrcpy(char *s,const char *t)
{
while (*s++=*t++);
*s='\0';
return s;
}
qzjhjxj 2021-05-10
  • 打赏
  • 举报
回复
函数需要返回的是数组s1的第一个元素的指针,相当于返回&s1[0],楼主的函数返回的是 return s2; , 修改如下,供参考:
char *mystrcpy(char *s1,char *s2)
{
    int i=0;
    for(i=0;s2[i];i++)
        s1[i] = s2[i];
    s1[i] = '\0';
    return s1;//返回的是s1的首地址
}
aguang 2021-05-10
  • 打赏
  • 举报
回复
根据C语言定义, 对于 'T s[常量表达式]' 即s是T类型的数组; 表达式s的值是指向数组中第1个对象的指针(表达式&/ziseof情形除外). 所以s的值是一个地址,而且 *s==s[0]
源代码大师 2021-05-10
  • 打赏
  • 举报
回复
这里面有,希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧