在模拟实现strcat函数时,如果我将dest++放入
char* my_strcat(char* dest,const char* sour)
{
char* ret = dest;
while (*dest) {
dest++;
}
while (*dest++ = *sour++);
return ret;
}
int main()
{
char arr1[20] = "hello ";
char arr2[] = "world";
my_strcat(arr1, arr2);
printf("%s", arr1);
return 0;
}
使用上面的代码可以模拟实现strcat函数。
但是如果将
while (*dest) {
dest++;
}
改成
while (*dest++);
输出的却不是正确结果
++运算符的优先级比解引用运算符*的优先级要高,因此 *dest++的运算顺序是 *(dest++),因此你将++放到while的判断条件里逻辑就不对了。
*dest++
的意思是取dest指针下一个位置的值;(*dest)++
的意思是取dest指针指向的值,然后再自加;