【发布时间】:2011-05-18 21:43:06
【问题描述】:
大家好 C 专家(请不要开枪,我不再是 C 程序员了,但我时不时会想到一个问题)
我正在阅读另一个问题 (How to print an entered string backwards in C using only a for loop)。
“最简单”和最合乎逻辑的答案是
for (x = end; x >= 0; --x) {
printf("%c", word[x]);
}
但我想知道是否没有办法实现相同的目标,但更接近原来的循环:
for (x = word[end]; x >= word[0]; x--) {
printf("%c", x);
}
我对 C 的了解不够多,无法解决这个问题,但我们不能用数组指针来循环播放
char * wordp;
for(wordp = &word[end]; /*something*/; wordp--){\
printf("%c", &wordp);
}
P.S.:我真的不在乎它是向前还是向后循环。
P.P.S.:对不起,如果我在指针中犯了明显的 C 错误;在评论中指出它们,我会编辑它们。 ;)
杰森
【问题讨论】:
-
当然可以,而且它可能更有效,因为在某些架构上增量比添加更快。不过,一个好的编译器应该使用这两种方法生成相同的代码。