|
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
|
|
Указатели и ссылки: в чем разница08.07.2017, 18:55. Показов 12368. Ответов 85
Метки нет (Все метки)
0
|
|
| 08.07.2017, 18:55 | |
|
Ответы с готовыми решениями:
85
Ссылки vs указатели - в чем разница?
в чем разница? массивы и указатели строк |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 09.07.2017, 20:35 | |||
|
Ты же требуешь не показать размер занятый ссылкой, а измерить его запихав саму ссылку в sizeof. А память в структуре наверно барабашка съел.
0
|
|||
|
Заблокирован
|
||||
| 09.07.2017, 20:47 | ||||
|
0
|
||||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 09.07.2017, 20:55 | |
|
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||
| 09.07.2017, 21:00 | |||||
|
0
|
|||||
|
Заблокирован
|
|||
| 09.07.2017, 21:09 | |||
|
А то мы таким образом договоримся до того, что padding-и являются объектами, ведь они занимают место.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.07.2017, 21:36 | ||
|
А договоримся мы до того, что структура толстеет от сырости. Ну раз уж потребителей памяти у нее внутри нет, а сама память почему-то расходуется, остается только сырость винить.
0
|
||
|
Заблокирован
|
|
| 09.07.2017, 21:39 | |
|
Renji, в общем, я так понимаю, подтверждения того, что "ссылка является объектом" не будет.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.07.2017, 21:45 | ||
|
Ну а доказательств того что структура с ссылкой больше структуры без ссылки, потому что ссылка память жрет - да, не будет. Признаю, возможно что память кушает барабашка, почему-то появляющийся там же где ссылки.
0
|
||
|
Заблокирован
|
|||
| 09.07.2017, 21:49 | |||
|
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.07.2017, 21:57 | ||
|
А "подмена понятий" это когда "невозможно непосредственно вытрясти из компилятора сколько он потратил на ссылку", подменяется на "компилятор не выделяет память под ссылку".
0
|
||
|
Заблокирован
|
|||
| 09.07.2017, 22:13 | |||
|
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.07.2017, 22:18 | ||
|
От того как стандарт обзовет занятые ссылкой байтики, они в свободные байтики не превратятся.
0
|
||
|
Заблокирован
|
|||
| 09.07.2017, 22:38 | |||
|
Добавлено через 10 минут Отсюда не следует, что если что-то не занимает определённый объём памяти одновременно с объектом, то это что-то — объект; это элементарный закон логики. Если ты думаешь, что следует — у тебя явно проблемы с мышлением. Купи себе учебник по логике.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 09.07.2017, 22:43 | |||
|
Ты где в этой цитате видишь "по стандарту ссылка==объект"? Ну а что себе купить - подумай сам.
0
|
|||
|
Заблокирован
|
||
| 09.07.2017, 22:49 | ||
|
Какие кто вкладывает смыслы в термин "объект" в своей голове — я не собираюсь догадываться. Для меня важно только значение этого термина. Кликните здесь для просмотра всего текста
Впрочем, чем смысл отличается от значения ты вряд ли знаешь.
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 09.07.2017, 23:01 | ||
|
0
|
||
|
Неэпический
|
|
| 10.07.2017, 00:46 | |
Сообщение было отмечено gru74ik как решение
Решение
Renji, ссылка и указатель отличаются именно фундаментально на уровне языка.
![]() Выделим различия, которые так или иначе присутствуют: * ссылка должна быть обязательно инициализирована, указатель не обязан; * нельзя сделать ссылку на "нулевой объект" в корректной программе, указателю может быть nullptr; * ссылку нельзя "переназначить", указатель - можно; * синтаксис с ссылками проще читать; * указатель - адрес, ссылка - псевдоним; * мы не можем без proxy-чего-то взять указатель на временный объект, однако создать ссылку на такой объект можем; * ссылкой можно продлить время жизни временного объекта, указателем - нет; * указатель всегда занимает память (не берем в расчет оптимизации), для ссылки данный критерий неспецифицирован вовсе, т.е. если мы сможем настроить компилятор так, чтобы он вообще ничего не вырезал, то вырезать указатель он не сможет, а вырезание ссылки - законное поведение, т.к. она может законно не занимать память; * нельзя содать массив ссылок, массив указателей - можно; * нельзя сделать ссылку на ссылку, указатель на указатель - можно; * нельзя сделать указатель на ссылку, но ссылку на указатель можно; * с помощью указателя будет проблематично обозначить "ненужный далее" объект; * в шаблонах нужно четко понимать различия ссылок и указателей, эти различия могут существенно повлиять на код. * пока печатал, возможно, что-то забыл. Спать пора.
4
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 10.07.2017, 01:29 | ||||||||
|
и это много где применяется. например, вот такой кейс:
можно передавать её в аргументах. её нельзя читать. я сейчас с планшета. так что не могу привести явных примеров кодом. но вот рецепты: 1.1 делаем поле класса ссылкой. смотрим sizeof класса, и обращаем внимание, 1.2 что ссылка чего то, да весит. делаем сильное предположение - компилятор профигачил ссылочное поле, как авто-разыменовывающийся указатель. 1.3 далее по смещению от this, с учетом типов полей и выравнивания, получаем адрес референсного поля. 1.4 вписываем в память поля адрес другой переменной. ПРОФИТ???!!!! 2.1 создаем обычную локальную ссылку где нибудь на стеке. 2.2 создаем функцию-детектор. она должна быть элипсисом (с тремя точками) 2.3 передаем вторым параметром ссылку. 2.4 получаем доступ к второму параметру через стандартные сишные макросы при этом тип аргумента определяем как указательный. 2.5 меняем значение по указателю, и убеждаемся: значение оригинального объекта корректно изменилось. а значит компилятор реально профигачил ссылку в аргументах элипсиса, как обычный указатель. 2.6 по аналогии с полем класса вписываем по значению указателя новый адрес. 2.7 ПРОФИТ??? оба способа - UB в чистом виде. сработает, только если не дать компилятору чего нибудь там с оптимизировать. в однофайловом проекте компилятор запросто может профигачить inline подстановками все места использования, например.
0
|
||||||||
|
Заблокирован
|
|||
| 10.07.2017, 01:37 | |||
|
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||
| 10.07.2017, 01:42 | ||||
|
0
|
||||
| 10.07.2017, 01:42 | |
|
Указатели и ссылки c++
Указатели и ссылки Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|