我正在使用 char* 数组将字符串的一部分复制到另一个 char* 数组中,我想知道是否这样做
do {
*pntr1++ = *pntr2++
} while (*pntr2 != '\0');
是一样的
do
{
*indPtr = *wordPtr;
indPtr++;
wordPtr++;
} while (*wordPtr != '\0');
还是我最终会跳过使用第一种方法的索引?
是的,两者是等价的。后增量表示在该表达式中使用增量之前的值,并且增量发生在表达式末尾的序列点之前的某个时间(或者,在 C++ 术语中,“在”下一个表达式之前“排序”)。
因此,在这两种情况下,赋值都使用指针递增之前的值,而比较\0
使用指针递增之后的值。
如果您希望这会复制一个字符串,那确实会导致一个问题:至少在您显示的代码中\0
,终止(假定)字符串的 不会被复制(尽管您可以在之后添加代码来终止目标细绳)。
运算符++
在使用时a++
首先返回的值,a
然后递增它。
所以,代码
*a++ = *b++
和
*a = *b;
a++;
b++;
是等价物。