我正在实现一个 strdup 函数作为练习。
char* strdupPtr(const char* str) {
const size_t sz{strlen(str)+1};
char *save, *temp;
save = temp = (char*)malloc(sz);
while((*temp++ = *str++)); // compiler warning with only 1 set of parenthesis
return save;
}
在几次失败后,我发现当返回“保存” (wiki 参考)指针时它可以正常工作,但在返回“临时”时不能正常工作。为什么在处理指针时需要直接返回 save 而不是 temp(下标数组版本不使用 save 也可以工作)?