34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,555
|
|||||||||||
1 | |||||||||||
Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей?27.03.2017, 20:38. Показов 765. Ответов 5
Метки нет (Все метки)
Доброго времени суток!
Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты, для чего используются указатели на указатели. Всё понял, кроме одного момента В строке 48
0
|
27.03.2017, 20:38 | |
Ответы с готовыми решениями:
5
Почему массив указателей на строки не указывает на адреса? Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей Почему адреса у указателей разные, несмотря на то, что они указывают на одну и ту же переменную? Список указателей на авторские объекты, я могу воспользоваться только первым его элементом. Почему? |
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
|
|||||||||||
27.03.2017, 20:52 | 2 | ||||||||||
Тут мы передаем в функцию order "адреса на адреса объектов". А в неё уже мы меняем местами адреса объектов.
Добавлено через 4 минуты Можно переписать, например, так:
Просто в функции order вы обходите массив указателей на элементы класса Person. Если Вы напишите
Нужно сначала перейти на следующий элемент массива указателей, разыменовать его и передать в функцию. Либо же не разыменовывая передавать его в функцию order, которая сама этим займётся. Надеюсь, я понятно объясняю.
0
|
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,555
|
|
27.03.2017, 21:18 [ТС] | 3 |
Nishen,
Я вот как понимаю. Если person** pp1 указатель на адрес указателя, то * pp1 адрес указателя объекта, а pp1 адрес объекта. То есть ** pp1 - разыменовать указатель, * pp1 - разыменовать объект. Или это неправильно?
0
|
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
|
|
27.03.2017, 21:24 | 4 |
Fatmarmelad, нет, **p1 - указатель на указатель, *p1 - указатель на объект, p1 - объект.
Иными словами, пусть у нас есть объект p1. Положим его по адресу 0x0001, к примеру (в 0х0001 лежит p1) - это будет *p1. Теперь значение указателя *p1 (0х0001) положим по адресу (0х0002) - это будет **p2. Добавлено через 37 секунд Ну, и выражаться так не верно. Разыменовывают не объекты, а указатели.
0
|
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,555
|
|
27.03.2017, 22:16 [ТС] | 5 |
Nishen, а как можно разыменовать **p2?
0
|
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
|
|
27.03.2017, 22:40 | 6 |
Дважды применить к указателю операцию разыменования.
0
|
27.03.2017, 22:40 | |
Помогаю со студенческими работами здесь
6
Виртуальные функции (создать массив указателей на объекты трех классов) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |