【发布时间】:2013-01-07 06:41:31
【问题描述】:
我在网上看到了这个算法来反转一个字符串,我对此有一些疑问,我将在代码末尾指定:
void reverseString(char *original_string)
{
char *end = original_string;
char tmp;
if(original_string) {
while(*end) {
++end;
}
--end;
while (original_string < end) {
tmp = *original_string;
*original_string++ = *end;
*end-- = tmp;
}
}
//This line doesn't have the complete reversed string. Why?
printf("%s\n", original_string);
}
1) 在while循环中...为什么要比较两个指针?我们怎么知道这个值会变大还是变小?这些只是指针,对吧?
2) 为什么我们不返回任何东西?反转的字符串在哪里?如果我们暗示反转的字符串在 original_string 中,我们不应该使用指向指针的指针以使效果在外部范围内吗?
3) 如果我执行以下操作:
char test[] = "hello";
reverseString(test);
printf("%s\n", test);
我可以看到“olleh”。但是,如果我在函数 reverseString 的最后一行执行printf("%s\n", original_string);,我只会得到“leh”。这是为什么呢?
【问题讨论】: