我试图理解以下示例。我有点困惑这实际上是如何工作的。
void strcpy(char *s, char *t)
{
while (*s++ = *t++)
;
}
任何帮助都很棒。谢谢!
我试图理解以下示例。我有点困惑这实际上是如何工作的。
void strcpy(char *s, char *t)
{
while (*s++ = *t++)
;
}
任何帮助都很棒。谢谢!
请记住,C 中的字符串只是指向字符列表的指针,以 . 结尾\0
。
还要记住\0
(空字节)是falsy,也就是说,如果它处于某个条件中,那么该条件将为 false。
此函数获取指向源字符串开头的指针和指向目标字符串开头的指针。
然后循环遍历源字符串中的每个字符,将字符复制到目标字符串。评估条件时,后增量++
将使指针前移一个字节。
据我所知,这个实现也有一个问题。如果源字符串的长度不完全相同,则末尾不会有空终止符。为了安全起见,您应该\0
在目标字符串的末尾添加 a。
的值*s++ = *t++
是赋值右侧的值,*t
。所以循环将在*t 为0 时终止,即在t 指向的字符串的末尾。在将 指向的字符分配给 指向的字符之后,该条件还会增加t
(and ) 的值。循环体中没有任何内容,条件本身进行复制。s
t
s