【发布时间】:2016-07-02 04:37:42
【问题描述】:
c 编程新手。有人可以帮我理解 while 循环在这段代码 sn-p 中的作用吗?我从未见过这种类型的 while 循环。
但是,我确实知道它正在执行指针运算,但它实际上是在说什么以伪代码或简单的英语分解? :)
char*
cpy (char* s)
{
char *dest, *d;
d = dest = malloc(strlen(s) * sizeof(char) + 1);
if (d)
while ((*d++ = *s++));
return dest;
}
【问题讨论】:
-
我相信它是将字符串从一个来源复制到另一个来源。它是按角色做的。它在一行中做了很多事情。它将 *d 设置为 *s 处的任何值,并将它们都递增到下一个字符。当它最终到达空字符(字符串的结尾)时,它会返回它,从而导致 while 循环结束。
-
你在 k&r 的书中读过这个吗?你最好调用
memcpy来复制一个字符串 -
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
@self 这可能不是 OP 的实现,它可能只是他们看到并希望帮助理解的一个例子。我同意只使用
memcpy会更容易,但我认为这更多的是试图掌握某些语法。 编辑:strcpy也是一个东西 -
@ChrisSprague 没错。这不是我的代码。我只是想掌握语法,这对我来说很陌生。
标签: c