Ссылки vs указатели - в чем разница?21.11.2015, 20:04. Показов 17037. Ответов 150
Метки нет (Все метки)
Навеяно соседней темой. Не понимаю в чем разница, хотя несколько раз честно пробовал почитать на эту тему, правда без должного внимания и усердия. Зато программировал на ассемблере и чистом С, понимаю абстракцию "адрес ячейки памяти" и "размер типа в байтах", с арифметикой указателей и указателями на указатели сложностей вроде не испытываю
Есть переменная, если она не регистровая - то лежит в какой-то ячейке памяти (или нескольких, зависит от разрядности памяти и структуры типа переменной), адрес этой ячейки (ака указатель) я могу запоминать в другую переменную типа указателя, передавать/возвращать ее из функций, инкрементировать/декрементировать для движения по массиву переменных (если я его предварительно нарезал в той области памяти конечно), разыменовывать и получать/изменять значение. Вроде все. При чем тут термин "ссылки"? А еще оказывается бывают смартпоинтеры, умные указатели и прочие страшные слова
0
|
|
| 21.11.2015, 20:04 | |
|
Ответы с готовыми решениями:
150
в чем разница? массивы и указатели строк |
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 26.11.2015, 13:02 | |
|
Evg
Использование ссылок в C++ без использования оптимизации, всё равно, что брачная ночь без невесты. Ссылки специально оговариваются стандартом как некоторая абстракция без уточнения конкретной реализации. Если передавать параметры по ссылке на неизменяемые данные, то компилятор может провести оптимизацию для данной платформы: когда надо передать через указатель, а когда можно и нужно -- скопировать. Мы не почувствуем разницы, но и не рискуем вляпаться в дыры "преждевременной оптимизации". Именно возможности "оптимизации по необходимости" для управляемых языков позволяют им быть сегодня почти такими же быстрыми, как и низкоуровневые языки.
0
|
|
|
|
|||
| 26.11.2015, 13:18 | |||
|
Если ты хочешь писать эффективный код, ты должен понимать, в какой реальный код машины выливается та или иная конструкция и как с ней отработает компилятор (может или не может оптимизировать и в какой мере). Пока ты живёшь на уровне абстракций, у тебя нет возможности думать обо всех вещах, следовательно, ты не можешь реально оценить/управлять эффективность работы своего кода
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 26.11.2015, 13:22 | ||
|
a = b - c; выглядит красивше, чем a = &b - &c;
2
|
||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||
| 26.11.2015, 13:28 | ||
|
А я гораздо лучше разбираюсь в абстракциях предметной области, чтобы написать макроязык.
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 26.11.2015, 13:30 | ||
|
0
|
||
|
Комп_Оратор)
|
||||||||
| 26.11.2015, 13:45 | ||||||||
![]() Добавлено через 8 минут
0
|
||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 26.11.2015, 13:47 | |
|
0
|
|
|
|
|||
| 26.11.2015, 14:43 | |||
|
3
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 26.11.2015, 15:02 | ||
|
Однако такая новая сущность, как перегрузка операторов, введена, по сути, только для того, чтобы было красивше (ну, или удобнее).
0
|
||
|
Комп_Оратор)
|
||
| 26.11.2015, 15:14 | ||
|
Красота требует ссылок. Красота спасёт стек! Красота страшно эффективная сила.
1
|
||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||
| 26.11.2015, 15:24 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 26.11.2015, 15:48 | ||
|
0
|
||
|
|
||||
| 26.11.2015, 16:14 | ||||
|
0
|
||||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|||
| 26.11.2015, 16:28 | |||
|
Как она реализована? Не знаю! В одном месте программы компилятор может реализовать её указателем, в другом копией, в третьем -- квантовым запутованием. Абстракция может быть реализована огромным количеством способов и компилятор, опираясь на то какая операционная система, какое железо и т.п. может сделать правильный выбор реализации в конкретной точки программы. Это центральное преимущество JIT компиляции, которое уже сегодня даёт возможность на C# написать код столь же быстрый, что и на С++. То есть, чтобы обогнать приложение под Windows на C# придётся приложить несоразмерные усилия. Вот мощь абстракции!
2
|
|||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
| 26.11.2015, 17:03 | ||||||
|
Вот так абстрагируешься, абстрагируешься, а потом смотришь и понимаешь, что не фига не понимаешь и приходится нарушать абстракции.
0
|
||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 26.11.2015, 17:07 | ||
|
Еще одно подтверждение того, что красивое и полезное вещи в чем-то схожие.
0
|
||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 26.11.2015, 17:18 | |
|
daslex
Если везде понатыкать побочных эффектов, то можно любой код сделать нечитаемым. В данном примере fr не определяет абстракцию, так как ей невозможно пользоваться без знания внутренних деталей. Вот как раз такие ситуации, когда начинают мутить воду: я вот тут кусочек памяти сэкономлю, а здесь пару тактов выиграю... в результате приводят к коду, который полон утечек памяти, еле ползёт и его невозможно поддерживать.
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.11.2015, 17:25 | |
|
Да ладно. Там как раз вообще ничего знать не надо. Достаточно знать конечные результаты.
Вы яростно оперируете понятием абстракция, абстрагировавшись от определения абстракции.
0
|
|
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 26.11.2015, 17:38 | |
|
daslex
fr не синоним переменной x или произвольной переменной, или своего аргумента. fr была бы синонимом счётчика, если бы возвращала новое состояние. int fr(const int& x); В противном случае Вы нарушаете абстракцию, нарушая инкапсуляцию. P.S. Смоделировать абстракцию с побочными эффектами вообще не самая простая затея. Прежде всего следует рассмотреть все варианты с иммутабельными данными.
0
|
|
| 26.11.2015, 17:38 | |
|
Указатели и ссылки [С++]
Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой
Зрите в корень - монополизация на разработку программ. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|