指针算术中的一元递增运算符
这是我的第一篇文章。
我有这个函数用于在C中反转字符串
我发现了
void reverse(char* c) {
if (*c != 0) {
reverse(c + 1);
}
printf("%c",*c);
}
它工作正常,但如果我更换:
reverse(c + 1);
有:
reverse(++c);
原始字符串的第一个字符被截断。我的问题是为什么会这样
在这种情况下,语句不相同?
谢谢
没有找到相关结果
已邀请:
4 个回复
目浆搽
不会改变
的值,而
会改变。
骂陋冠
相当于
,而不是
。如果用
替换
线,则改变
。就递归调用而言,这无关紧要(为什么?),但意味着
指向
中的某个新位置。
捻盒愧杯
不会改变
,
递增c然后在替换的递归调用中使用新值
良阑纠苫
改变
的值,但
不改变。 这在递归调用本身中无关紧要:
和
会将相同的值传递给
;在递归调用后在
中使用
时会出现差异 - 在
情况下,
的值在到达
时已经改变。