0

我正在使用 char* 数组将字符串的一部分复制到另一个 char* 数组中,我想知道是否这样做

do {
    *pntr1++ = *pntr2++
} while (*pntr2 != '\0');

是一样的

do
{
    *indPtr = *wordPtr;
    indPtr++;
    wordPtr++;
} while (*wordPtr != '\0');

还是我最终会跳过使用第一种方法的索引?

4

2 回答 2

3

是的,两者是等价的。后增量表示在该表达式中使用增量之前的值,并且增量发生在表达式末尾的序列点之前的某个时间(或者,在 C++ 术语中,“在”下一个表达式之前“排序”)。

因此,在这两种情况下,赋值都使用指针递增之前的值,而比较\0使用指针递增之后的值。

如果您希望这会复制一个字符串,那确实会导致一个问题:至少在您显示的代码中\0,终止(假定)字符串的 不会被复制(尽管您可以在之后添加代码来终止目标细绳)。

于 2013-07-17T05:15:56.963 回答
2

运算符++在使用时a++首先返回的值,a然后递增它。

所以,代码

*a++ = *b++

*a = *b;
a++;
b++;

是等价物。

于 2013-07-17T05:15:33.837 回答