c - 奇怪的 while 循环。困惑

标签 c

C 编程新手。有人可以帮助我理解 while 循环在此代码片段中的作用吗?我从未见过这种类型的 while 循环。

不过,我确实理解它是在执行指针运算,但它实际上是用伪代码还是简单的英语来表达的? :)

char*
cpy (char* s)
{
  char *dest, *d;

  d = dest = malloc(strlen(s) * sizeof(char) + 1);

  if (d)
    while ((*d++ = *s++));
  return dest;
}

最佳答案

在 C 中,值 0 表示假,任何其他值表示真。字符串以值为 0 的空字符结尾。此 while 循环将所有字符从 s 复制到 d,直到到达空字符(字符串结尾)。

赋值 *d++ = *s++ 返回与 *s++ 赋值给 *d 相同的值

在循环之后,sd 都将指向空字符之后。注意 null 也被复制了。

关于c - 奇怪的 while 循环。困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153313/

相关文章:

c++ - 传递给函数的数组参数不是常量指针吗?

c# - 为什么使用 .NET 框架的程序比非托管代码中的相同程序小?

c - 使用 C API 需要 #include <tango-api/public-api.h>

c - 如何在 C 中获取 xterm 的命令行参数?

c - 读取 ELF 部分的内容(以编程方式)

c - 在C中初始化Lua状态

使用 cvDCT 函数在 opencv 中计算 dct

c - 测量执行时间

c - 使用 Bison 时的错误

c++ - 当类型转换为 int 时,C/C++ bool 类型是否总是保证为 0 或 1?