Забудьте о программировании и указателях на секунду, и давайте подумаем о библиотеке. Есть много полок с большим количеством книг. Каждая книга находится в определенных координатах. Например, The Сказка о двух городах может быть на Проход P, Полка 2, Слот 14; аналогичным образом, Jane Eyre может быть на Проход Q, Полка 13, Слот 1. Очевидно, что вы хотите, чтобы книги в библиотеке были хорошо организованы, чтобы их можно было легко найти.
Теперь рассмотрите библиотекаря, которому поручено убедиться, что книги в вышеупомянутых координатах находятся в правильном порядке. Библиотекарь идет к каждой координате, смотрит на названия книг в этих координатах и определяет, какой из них должен идти первым. В нашем случае библиотекарь заметил бы, что с J приходит до T, ей нужно поменять книги.
Ваша домашняя работа, по-видимому, является версией на C++. Функция sort2
имеет два адреса памяти (то есть расположение книг), и она должна удостовериться, что содержимое первого местоположения правильно сравнивается с содержимым второго местоположения. («Сравнительно правильно», как правило, либо «сравнивается меньше», либо «сравнивается больше, чем», в зависимости от того, сортируете ли вы восходящий или нисходящий.)
Как называется sort2
, эта часть немного сложнее объяснить , и моя аналогия не работает отлично. Переменные x
и y
обычно считаются данными (например, содержимым книги), но каждый из них также имеет связанный адрес (например, где находится книга). Если вы наберете x
, вы запрашиваете содержимое переменной; если вы наберете &x
, вы запрашиваете соответствующий адрес памяти. В отличие от книг, память компьютера постоянно меняется (это, конечно же, причина, почему компьютеры настолько полезны). Таким образом, в этом контексте x
и y
лучше воспринимать как именованный кусок памяти, а не имена для фактических данных (например, они являются названиями мест размещения книг, а не содержимым книг). Поэтому, когда вы звоните по телефону sort2(&x, &y)
, адреса операторов четко указывают, что вы используете местоположенияx
и y
, а не их данные. После разговора адреса x
и y
не будут изменены, но их содержимое может иметь.
Надеюсь, это поможет!
Почему бы не сравнить их адреса памяти? что вы подразумеваете под «если указатели уже отменяются функцией уже»? – John3136
Вам следует сравнить x и y, а не их адреса. – Beta