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

我的问题是,这段代码是做什么的(来自http://www.joelonsoftware.com/articles/CollegeAdvice.html):


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

该网站说上面的代码复制了一个字符串,但我不明白为什么...


与指针有关吗?


精慕HU
浏览 687回答 3
3回答

千巷猫影

等效于:while (*t) {    *s = *t;    s++;    t++;}*s = *t;当t指向的字符为is时'\0',while循环将终止。在此之前,它将复制所t指向的char到所指向的char s,然后递增s并t指向其数组中的下一个char。

素胚勾勒不出你

幕后花了很多时间: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++;但以更紧凑的方式写出来。
打开App,查看更多内容
随时随地看视频慕课网APP