… создает указатель, * x,…
Нет, x
- указатель. *x
это то, на что он указывает.
… что означает (x
x < y
проверяет, указывает ли x
на что-то раньше чем y
. (Это определяется только в том случае, если x
и y
указывают на один и тот же массив, структуру или объединение.) В массиве элемент является более ранним, чем другой, если он имеет более низкий индекс. В структуре член является более ранним, чем другой, если он объявлен ранее в определении структуры. В объединении ни один член не является более ранним, чем любой другой.
Является ли в то время, как l oop просто инвертирует массив?
Код l oop не работает , Он никогда не изменяет x
или y
, поэтому он никогда не изменяет, оценивается ли условие x < y
как истинное, поэтому, если введено значение l oop, оно никогда не завершается. Это похоже на код, который, возможно, был предназначен для обращения элементов массива. Если вы измените его на:
while (x < y)
{
int t = *x;
*x++ = *y;
*y-- = t;
}
, то на каждой итерации он продвигается x
и тормозит y
. В середине массива они будут равны (если есть нечетное количество элементов) или пересекутся (если есть четное количество элементов). В любом случае, x < y
будет тогда ложным, и l oop остановится, поменяв местами каждый элемент спереди с элементом в отраженном положении сзади, таким образом полностью изменив содержимое массива.