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