|
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
|
|
Указатели и ссылки: в чем разница08.07.2017, 18:55. Показов 12195. Ответов 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++
Указатели и ссылки Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|