gpt4 book ai didi

c - 这个 reverseString 算法是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:26 26 4
gpt4 key购买 nike

在网上看到了这个字符串反转的算法,有一些疑惑会在代码末尾说明:

    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”。这是为什么?

最佳答案

您有两个指向要反转的部分的开头和结尾的指针。在每一步中,您交换这些指针指向的字符,然后减少要从两个方向(开始和结束)反转的字符串。比较指针有以下含义——直到区间开始不在区间结束之后,我们还有一个区间要反转。希望这是有道理的。

您不需要返回任何东西 - 字符串原地反转,因此参数同时进出。

3) 在函数中,你复制了一个指向字符串的指针,你在它的执行过程中修改了它,所以当指针被最后一行修改时,它不再指向字符串的开头,而是指向中间,它留在最后的地方。

关于c - 这个 reverseString 算法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14485585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com