|
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
|
|
Указатели и ссылки: в чем разница08.07.2017, 18:55. Показов 11878. Ответов 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 | |
|
Помогаю со студенческими работами здесь
40
Указатели и ссылки c++
Указатели и ссылки Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|