【发布时间】:2014-06-27 17:14:08
【问题描述】:
所有,我的教授给了我们以下循环用于本周的作业:
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 并且工作正常,我只是不明白为什么。
【问题讨论】:
-
代码已修复。是因为它们指向同一个数组吗?
-
由于两个指针现在是相关的,因此可以像您一样比较它们。
-
@JoachimPileborg,没关系。我错了;这是未指定的。现在因为那里有一个 C 标签,谁知道呢,因为它在 C 中是未定义的,在 C++ 中是未指定的。
-
要了解代码的作用,请在调试器中逐行执行,检查所有变量的值。它应该告诉你它是如何工作的。
-
它基本上是交换第一个和最后一个字母,然后是第二个与倒数第二个,然后是第三个......
标签: c++ while-loop