gpt4 book ai didi

c - 使用指针反转字符串

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

我目前正在研究不同的算法来练习我的编码优势,并遇到了一个算法来反转字符串。它使用指针,我对发生的事情有点困惑。代码如下:

void reverse(char *str) {
char * end = str;
char tmp;
if (str) {
while (*end) {
++end;
}
--end;
while (str < end) {
tmp = *str;
*str++ = *end;
*end-- = tmp;
}
}
}

所以在这段代码中,end 放在第一个 while 循环中字符串内存位置的末尾。然后第二个是我感到困惑的地方。我不明白 *str++ = *end 和 *end-- = *temp 是怎么回事。

为什么会这样?当 tmp = *str 行出现时,字符串的第一个字母进入 temp 还是我想错了?

最佳答案

如您所知,end 指向最后一个字符。现在在第二个 for 循环中,他只是将第一个字符与最后一个字符交换,然后将 str 指针向其右侧移动并在其左侧结束。

while (str < end) {
tmp = *str; // storing the char at str in temp
*str++ = *end; // storing the char at end at str position and then incrementing str .. i.e. moving str right
*end-- = tmp; // storing the char in tmp at end position and then decrementing tmp .. i.e. moving tmp left
}

关于c - 使用指针反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869521/

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