while ((*tmp++ = *src++) != ‘\0’)

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:43:19
这个式子是什么意思??
循环条件是*dest!=‘\0’,还是*src!='\0'???

tmp 和src应该是两个字符串的首地址
(*tmp++ = *src++) 用来循环将src字符串的内容附给tmp
!= ‘\0’ 这个是循环条件 当遇到\0时结束,但此时也已经将\0给tmp了

所以最后的效果就是把src指向的字符串的内容拷贝到tmp指向的地址空间了

while ((*tmp++ = *src++) != ‘\0’)
应该这样理解:

*tmp++=*src++;这个是个表达试,因为有表达试的值为她的左值,就是为

*tmp++. 而*temp++的值为*temp; 所以判断的条件为*tmp不为'\0'

但是又因为*tmp的值为*src赋给它的,所以最后还是判断*src是否为'\0'

所以程序在判断*src是否为'\0',一但为'\0',它就被赋给了*tmp;

从而使*tmp++为'\0',最后表达试的值为'\0',退出循环

这样也可以

while (*tmp++ = *src++,*tmp);这样也可以实现

copy字符串,把src的字符copy到tmp中,当*src为‘\0’时结束

字符串copy,,从src到tmp中.