Ссылки vs указатели - в чем разница?21.11.2015, 20:04. Показов 17309. Ответов 150
Метки нет (Все метки)
Навеяно соседней темой. Не понимаю в чем разница, хотя несколько раз честно пробовал почитать на эту тему, правда без должного внимания и усердия. Зато программировал на ассемблере и чистом С, понимаю абстракцию "адрес ячейки памяти" и "размер типа в байтах", с арифметикой указателей и указателями на указатели сложностей вроде не испытываю
Есть переменная, если она не регистровая - то лежит в какой-то ячейке памяти (или нескольких, зависит от разрядности памяти и структуры типа переменной), адрес этой ячейки (ака указатель) я могу запоминать в другую переменную типа указателя, передавать/возвращать ее из функций, инкрементировать/декрементировать для движения по массиву переменных (если я его предварительно нарезал в той области памяти конечно), разыменовывать и получать/изменять значение. Вроде все. При чем тут термин "ссылки"? А еще оказывается бывают смартпоинтеры, умные указатели и прочие страшные слова
0
|
|
| 21.11.2015, 20:04 | |
|
Ответы с готовыми решениями:
150
в чем разница? массивы и указатели строк |
|
Комп_Оратор)
|
|||
| 03.12.2015, 22:45 | |||
|
Как-то всё сводится к тому у кого компилятор толще. ![]() Так я везде и пишу, что не профи программист.
0
|
|||
|
|
|||
| 03.12.2015, 23:05 | |||
|
C++ // тела обеих функций для компилятора не видны extern void foo (const int&); extern void bar (int&); int x, y; void func (void) { int a = 0; foo (a); x = a; bar (a); y = a; }
3
|
|||
| 03.12.2015, 23:16 | |
|
0
|
|
|
Комп_Оратор)
|
||
| 03.12.2015, 23:24 | ||
|
Ну давайте скажем, что не const ни inline не помогают. Я не берусь их сравнивать, - боже упаси. Тема и так ушла в туман. ![]() Добавлено через 4 минуты
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||
| 03.12.2015, 23:29 | |||
|
Однако, как правило, программисты не работают на бесконечном множестве реализаций. У меня вот используются 4 аппаратные платформы и 3 ОС. Также 3 разных компилятора. Их способности к оптимизации на этих платформах известны, поэтому можно делать прогнозы. Не по теме:
Никакого спора, правда :)
0
|
|||
|
|
||
| 03.12.2015, 23:37 | ||
|
const на параметрах-указателях по замыслу разработчиков языка должен был помогать оптимизациям ещё в Си. И на моей памяти я когда-то работал с каким-то компилятором, который это учитывал. Но реальная жизнь оказалась такова, что очень много разработчиков попросту не умеют программировать и с const-указателями работают неправильно. Пока компиляторы были слабые, они далеко в оптимизации не закапывались и эти ошибки никак не проявлялись. Но потом компиляторы стали умнее, а софт остался старый и с ним было много проблем именно из-за старых ошибок. Вполне возможно, что нежелание современных компиляторов учитывать const-указатели в параметрах (проверял на gcc, clang, suncc) обусловлено именно этим. const-ссылка с точки зрения внутреннего устройства компилятора является прямым наследником const-указателей. И если бы компиляторы нормально работали с const-указателями, то всё бы отнаследовалось и в const-ссылках. В этом смысле const на параметрах-указателях и параметрах-ссылках можно сказать, что помогает компилятору Другое дело inline. В реальности он уже давно никому не помогает, компиляторы давно научились сами всё решать. В языках Си, Си99, gnu-Си, Си++ на ключевое слово inline нагружены различные смыслы. И здесь, как мне кажется, у ключевого слова inline была судьба схожая ключевому слову auto. На "inline" нагрузили разные смыслы в разных языках, потому как изначальный смысл (подсказка/просьба компилятору) стал ненужным
1
|
||
|
Комп_Оратор)
|
|||
| 03.12.2015, 23:45 | |||
|
Не по теме:
-помогают; -безразлично; -мешают И кроме всего, то что зависит от реализации разве есть смысл обсуждать в "ссылки и указатели" для новичков? У них и так глаза квадратные. :scratch: :senor: Добавлено через 6 минут
0
|
|||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 03.12.2015, 23:57 | |
|
Думаю, что это будет интересно почитать хоть кому-то))
https://docs.google.com/docume... sp=sharing
2
|
|
|
|
||
| 04.12.2015, 10:33 | ||
|
Добавлено через 4 минуты А... не дочитал. Там так и написано "Examples 1 and 5 are never optimized as desired, while"
0
|
||
| 04.12.2015, 12:22 | |
|
Не по теме: Это эталонного тупняка тред?
0
|
|
| 04.12.2015, 13:29 | |
|
Не по теме: Voivoid, всё базово архисерьёзное есть в книгах. Мы же говорим либо о каких-то нюансах, которые в книгах найти трудновато, либо о том, что найти просто, но под каким-то необычным углом, поскольку традиционный подход может быть кому-то труден и нужна параллельная информация для сравнения .
0
|
|
| 04.12.2015, 13:29 | |
|
Указатели и ссылки [С++]
Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|