为了账号安全,请及时绑定邮箱和手机立即绑定

“ while(* s ++ = * t ++)”如何复制字符串?

“ while(* s ++ = * t ++)”如何复制字符串?

C
精慕HU 2019-10-09 15:30:35
我的问题是,这段代码是做什么的(来自http://www.joelonsoftware.com/articles/CollegeAdvice.html):while (*s++ = *t++);该网站说上面的代码复制了一个字符串,但我不明白为什么...与指针有关吗?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

等效于:


while (*t) {

    *s = *t;

    s++;

    t++;

}

*s = *t;

当t指向的字符为is时'\0',while循环将终止。在此之前,它将复制所t指向的char到所指向的char s,然后递增s并t指向其数组中的下一个char。


查看完整回答
反对 回复 2019-10-09
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

幕后花了很多时间:


while (*s++ = *t++);

在s和t变量的指针(几乎可以肯定字符),s作为目的地。以下步骤说明了正在发生的事情:


t(*t)的内容被复制到s(*s),一个字符。

s和t都增加(++)。

分配(副本)返回被复制(到while)的字符。

所述while继续进行,直到该字符是零(字符串中的端部C)。

实际上,它是:


while (*t != 0) {

    *s = *t;

    s++;

    t++;

}

*s = *t;

s++;

t++;

但以更紧凑的方式写出来。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 686 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信