gpt4 book ai didi

c++ - 为什么这个指数有效? C++

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

所有,我的教授给了我们以下循环,供我们在本周的作业中使用:

char *ptr1, *ptr2;  
char c;
ptr1 = &arr[0];
ptr2 = &arr[idx-1];

while(ptr1 < ptr2){
c = *ptr1;
*ptr1 = *ptr2;
*ptr2 = c;

ptr1++;
ptr2--;
}

这是关于 ptr1 和 ptr2 的位置吗?该程序反转 c_str 并且工作正常,我只是不明白为什么。

最佳答案

您在理解任何个别陈述时遇到问题吗?如果没有,那么看看它是如何工作的只是完成这些步骤的问题。

循环的前三个语句交换了 ptr1 指向的字符和 ptr2 指向的字符。最初,ptr1ptr2 指向字符串的第一个和最后一个字符。第二遍,它们指向字符串的第二个和倒数第二个字符,等等。

最初:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | a | b | c | d | e | NUL | c | ? |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

c = *ptr1; 之后:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | a | b | c | d | e | NUL | c | a |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

*ptr1 = *ptr2; 之后:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | e | b | c | d | e | NUL | c | a |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

*ptr2 = c; 之后:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | e | b | c | d | a | NUL | c | a |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

ptr1++之后; ptr2--;:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | e | b | c | d | a | NUL | c | a |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

再过一遍之后:

        +-----+-----+-----+-----+-----+-----+      +-----+
arr --> | e | d | c | b | a | NUL | c | b |
+-----+-----+-----+-----+-----+-----+ +-----+
^ ^
| |
ptr1 ptr2

循环结束。

关于c++ - 为什么这个指数有效? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457423/

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