|
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
Ссылки vs Указатели10.07.2012, 18:54. Показов 8194. Ответов 81
Метки нет (Все метки)
Почему ссылки считаются более хорошим средством, чем указатели?
Ведь если человек будет использовать сторонние классы, он может не заметить, скажем int &val и не будет знать, что передается ссылка, а вовсе не копия. Это может повлечь за собой кучу неприятностей. Даже сам разработчик может спустя время забыть о злополучном знаке &. Так почему ссылки лучше?
0
|
|
| 10.07.2012, 18:54 | |
|
Ответы с готовыми решениями:
81
Указатели и ссылки c++ Указатели и ссылки Ссылки, указатели |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 14.07.2012, 11:39 | |
|
Avazart, Дело в привычке, для меня очевидно что если const_iterator - нельзя изменить данные, на которые указывает итератор, если const ссылка - нельзя изменить данные на которые она ссылается.
2
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||
| 14.07.2012, 11:47 | ||
|
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 14.07.2012, 11:49 | |
|
Deviaphan, Да, согласен, все-таки итератор - это паттерн и предназначен он для обхода коллекции.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||||
| 14.07.2012, 13:38 | ||||||||
0
|
||||||||
|
Комп_Оратор)
|
|||||||||||||||||
| 14.07.2012, 17:12 | |||||||||||||||||
Самый сильный контекст это сигнатура и alex_x_x прав, на мой взгляд. Вопрос [ТС] интересен для меня в широком смысле. Не только при передаче в функцию. Тем более, что и ссылка и указатель в функцию копию не передаёт. Тут хотелось бы поддержать Avazart, в том, что терминология не только запутана, но и противоречива. Противоречия не в логике, а именно в том как это звучит. Такое наблюдается, кстати, во многих более или менее обособленных отраслях знания. Опытные программисты часто не могут понять, что именно непонятно новичкам. В частности это касается указателей и ссылок. Когда впервые сталкиваешься с этим вопросом волосы встают дыбом. Б. Страуструп постоянно оговаривает, что синтаксис указателей - дань совместимости с С...
Для устранения, части неудобств работы с указателями при передаче в функцию (в основном) придуман специальный случай - ссылка. О ссылках и указателях выше сказано уже много. Трудности восприятия синтаксиса, тема уходящая в С и сама по себе интересна, но мне хочется затронуть терминологию связанную с передачей аргументов в функцию, т.к. так поставлен вопрос в теме. Имя - идентификатор для программиста. Компилятор пользуется целыми числами. То есть простое объявление и определение:
В C/C++ у программиста есть возможность получить доступ к памяти путём создания отдельной переменной хранящей адрес (номер байта), где расположено значение простой переменной (a). Эта переменная - указатель. Её можно объявить и связать с ней имя:
![]() Может и вредно оказаться тоже, - кому как пойдёт. Вот константная ссылка... Пример из той же оперы, - набор слов который не значит того, что слышится. Слава богу, что контекстная сила языка не только в этом. Этот блог - для тех кто только начинает. Опытных прошу не пинать.
0
|
|||||||||||||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 14.07.2012, 18:17 | ||
|
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 14.07.2012, 18:25 | |
|
silent_1991, В том же бусте много функций принимающих данные по ссылке и я думаю ни у кого с этим проблем не возникает.
1
|
|
|
Комп_Оратор)
|
||
| 14.07.2012, 18:56 | ||
![]() Ссылка, - компактнее и контекстно выразительнее. Но и внимания требует. Запись с указателями бывает сложной. Для тех же, кто легко это читает, - конечно не проблема.
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 14.07.2012, 19:11 | |
|
1
|
|
|
Комп_Оратор)
|
||
| 14.07.2012, 19:37 | ||
Сигнатура устраняет многозначность в контексте заданного [ТС] вопроса. Именно в этом контексте я и ожидал понимания фразы. Давайте мириться!
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 14.07.2012, 19:52 | |
|
Давай.)))
0
|
|
|
Комп_Оратор)
|
|||||||
| 14.07.2012, 22:15 | |||||||
![]()
0
|
|||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 14.07.2012, 22:37 | |
|
IGPIGP, имеется ввиду, что функция, принимающая указатель, принимает адрес по значению. Отсюда и косвенность (о которой вы писали несколько сообщений назад), косвенность по отношению к объекту, который передаётся по указателю (ссылке), а программист (на языке высокого уровня) всё же должен мыслить объектами, а не ноликами и единичками.
1
|
|
|
Комп_Оратор)
|
||||
| 14.07.2012, 22:49 | ||||
![]()
0
|
||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 14.07.2012, 22:59 | |
|
IGPIGP, я конечно может быть не до конца понял Ваш ответ, но имеется ввиду любой указатель передается по значению, а не только при указатель на указатель.
1
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||
| 14.07.2012, 23:10 | ||
|
& как раз признак низкоуровневого языка переходить от высокоуровневой конструкции ссылки (четко закреплена за объектом) к низкоуровневой указателя (вокруг одни violation) с телегой разыменований в самой функции.. это высокоуровневость?
0
|
||
|
|
|||||||
| 14.07.2012, 23:53 | |||||||
1
|
|||||||
|
Комп_Оратор)
|
||
| 15.07.2012, 00:32 | ||
|
Когда я привёл пример с массивами, а потом с объектами, тема уже затихла. Захотелось поразмышлять о том, что передавая указатели и не знакомясь с сигнатурой вызова, огрести тоже можно. Функция возвращает такой указатель на тип как и переданный. И если он где то ожидается, то гибель локальных переменных не спасает. Кроме того модифицировать значение указателя (непреднамеренно) и вернуть тоже можно. Но это и плохо, так как компилируется, как раз без проблем. И в месте вызова ничего не видно. Случай конечно узкий, и подумав признаю: пример когда доступ к значению в функции не предусмотрен, - некорректен.
0
|
||
| 15.07.2012, 00:32 | |
|
Помогаю со студенческими работами здесь
80
Указатели и ссылки Указатели и Ссылки Указатели и ссылки Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|