我的班级目前正在研究C语言中的指针,我们被要求解释以下函数在给定数组及其长度的情况下的作用。我目前了解到,它会创建一个指针* x,它指向数组中的第一个元素,然后它创建另一个指针* y,它指向数组的末尾。但是其余的我不明白。我将总结我的问题:
1st:while循环检查什么?换句话说,(x 2nd:while循环是否只是对数组求逆?如果是这样,x和y值如何增加?我看不到* x和* y引用数组中第一个和最后一个元素以外的任何元素的任何方法。 感谢您提供见解和知识。void mystery(int arr[], int len) {
int *x = arr;
int *y = arr + len - 1;
while (x < y) {
int t = *x;
*x = *y;
*y = t;
}
}
…它创建一个指针,* x,…
否,x
是指针。它指向的是*x
。
…(x
x < y
测试x
是否指向某个比y
更早的地方。 (仅在x
和y
指向相同的数组,结构或联合的情况下定义。)在数组中,如果元素的索引较低,则该元素比另一个元素早。在结构中,如果成员在结构定义中更早声明,则该成员早于另一个。在工会中,任何成员都不得早于任何其他成员。while循环是否只是对数组求逆?
循环已损坏代码。它永远不会更改x
或y
,因此它永远不会更改条件x < y
的计算结果是否为true,因此,如果进入循环,它将永远不会终止。看起来可能像是旨在反转数组元素的代码。