【发布时间】:2020-08-25 13:33:47
【问题描述】:
我知道这里有一些关于 p++、++p 和 p+1 之间区别的解释,但我还不能清楚地理解它,尤其是当它不使用该函数时:
void replace(char * str, char c1, char c2){
if (*str == '\0') {
return;
}else if (*str == c1) {
printf("%c", c2);
}
else {
printf("%c", *str);
}
replace(++str, c1, c2);
}
当我执行replace(++str, c1, c2); 或replace(str+1, c1, c2); 时,它可以工作,但replace(str++, c1, c2); 不行。为什么?
【问题讨论】:
-
除了哪个增量有效的问题之外,根本没有增加
str的意义,因为str在replace之后不再使用。写它的自然方式就是replace(str + 1, c1, c2)。
标签: c recursion c-strings post-increment function-declaration