192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Указатель на ссылку: как это использовать ?19.08.2018, 16:33. Показов 4897. Ответов 26
Метки нет Все метки)
(
Всем доброго времени суток форумчане. Решил для себя разобраться полностью с указателями и ссылками и по ходу чтения инфы столкнулся с такой записью выражения
Это читается как указатель на ссылку если я не ошибаюсь и смысл вроде понятен, просто "указатель на ССЫЛКУ", но не могу понять как это использовать и чему надо это присвоить. Пытался даже методом перебора присвоить ему что нибудь но не получается. Тут всё и так ясно, ссылка на указатель и ссылка на указатель на указатель
Типа что то такого
0
|
|
19.08.2018, 16:33 | |
Ответы с готовыми решениями:
26
Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? Как получить ссылку на указатель или указатель на указатель в массиве? Указатель на ссылку или что это такое?
|
2761 / 1915 / 569
Регистрация: 05.06.2014
Сообщений: 5,571
|
||||||
19.08.2018, 17:13 | 3 | |||||
Никак - компилятор не разрешает, IDE подчеркивает.
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
19.08.2018, 18:59 [ТС] | 6 |
Нет
![]() Это какое то правило? Я о E0248. Нет. Я увидел это на ХАБРЕ и явно понял не так, сказанное следующее в статье о ссылках, указателях и массивах выглядит так: Кликните здесь для просмотра всего текста
Также замечу, что &*EXPR (здесь EXPR — это произвольное выражение, не обязательно один идентификатор) эквивалентно EXPR всегда, когда имеет смысл (т. е. всегда, когда EXPR — указатель), а *&EXPR тоже эквивалентно EXPR всегда, когда имеет смысл (т. е. когда EXPR — ссылка).
Здесь имеется ввиду совсем другое, то есть если взять указатель EXPR, разыменовать его *EXPR, а потом "взять" адрес с разыменованного значения *&EXPR то он будет эквивалентен EXPR, т. е. &*EXPR = EXPR. Поздно это понял. ![]()
0
|
17423 / 9256 / 2263
Регистрация: 30.01.2014
Сообщений: 16,208
|
|
19.08.2018, 19:03 | 7 |
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
19.08.2018, 19:04 [ТС] | 8 | |||||
Вы мне помогли понять что имелось ввиду в статье своим кодом
0
|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|
19.08.2018, 19:46 | 9 |
![]() Добавлено через 4 минуты
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
19.08.2018, 20:06 [ТС] | 11 | |||||
Captain Maxee, Здравствуйте
Она правда игнорируется компилятором если встречает такую последовательность символов? Это как если
0
|
5 / 5 / 1
Регистрация: 20.07.2018
Сообщений: 24
|
||||||
19.08.2018, 20:17 | 12 | |||||
Если сравнивать ссылку с константным указателем (понятно,что вся рутина для ссылок убрана),то возможно как-то отталкиваться от этого?
Ну то есть, попробовать рассматривать поверхностно как указатели (опять же,я понимаю,что это всё таки не так):
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
19.08.2018, 20:34 [ТС] | 13 |
Mizofix, Всё же ссылки и указатели это два разных способа интерпретировать адрес.
Они одновременно так похожи друг на друга и такие разные. Я не могу пока что уловить(почувствовать) ту грань между ними которая их разделяет(и одновременно объединяет) ![]()
0
|
5 / 5 / 1
Регистрация: 20.07.2018
Сообщений: 24
|
|
19.08.2018, 20:39 | 14 |
no swear, да,действительно. С такой аналогией можно быстрее и запутаться.Я когда-то тоже думал об указателе не ссылку и наоборот,но мне показалось это ненужным.
1
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
19.08.2018, 21:05 | 15 |
2
|
Комп_Оратор)
![]() |
|
19.08.2018, 23:23 | 16 |
Легко. Я почитал и потерял связь с содержанием.
no swear, указатели на ссылки неразрешено создавать потому, что ссылки не имеют адресов. То есть, они не являются объектами какого либо типа. Они предоставляют доступ к уже созданным объектам, но ничего "своего" у них нет. Не размера ни адреса. Это значит, что сравнивать указатель и ссылку нельзя. Ссылка, это некий синтаксический ![]()
1
|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|
19.08.2018, 23:56 | 17 |
![]() Добавлено через 2 минуты ![]() * и ( или ) & не перегружены.
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
20.08.2018, 00:22 [ТС] | 18 | |||||
IGPIGP, Здравствуйте, спасибо за объяснение, более менее начал понимать почему нельзя создавать указатель на ссылку. Нужно ещё немного времени чтобы всё обдумать
![]() Но меня беспокоит ещё куча вопросов связанных с ссылками и один из них такой.
С появлением ссылок в C++ ПО МОЕМУ МНЕНИЮ путаницы стало намного больше, указателей хватало с их и так непростой структурой а тут ещё ссылки. Как по мне указатели для меня более лаконичнее выглядят, когда работаешь с ними знаешь что они "существуют", не как ссылки, какая у них структура, где они вообще располагаются в памяти, а как таковой памяти у них то и нет и адреса получить нельзя ![]() указателями можно оперировать, менять адрес значения на которое указатель ссылается, менять сам адрес приводить к разным типам, а ссылки? А ссылки ничего этого не умеют и тем не менее по сложности в изучении они не уступают указателям и даже превосходят их(наверное). Я не вижу смысла в ссылках, чтобы вот "без них никак" не получается. С указателями реально НИКАК а ссылки можно заменить указателями в работе и что изменится, не думаю что изменения буду кардинальными
0
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
20.08.2018, 00:35 | 19 |
1
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
20.08.2018, 00:40 [ТС] | 20 | |||||
Так напишите такое в функции
0
|
20.08.2018, 00:40 | |
Помогаю со студенческими работами здесь
20
Как передать двойной указатель не через ссылку? Как указать ссылку на указатель в качестве формального параметра
Как сделать указатель/ссылку на метод конкретного экземпляра класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |