5 / 5 / 6
Регистрация: 17.05.2014
Сообщений: 61
|
|||||||||||
1 | |||||||||||
В чем отличие ссылочных переменных от указателей?06.02.2016, 21:15. Просмотров 2666. Ответов 54
Метки нет Все метки)
(
Всем привет. Вопрос в теме, чем отличаются
0
|
|
06.02.2016, 21:15 | |
В чем отличие указателей и массивов на примере strlen()? В чем отличие локальных и глобальных переменных в C? В чём отличие разных способов объявления переменных?
|
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
|
06.02.2016, 21:18 | 2 |
а ни в чем, только синтаксис.
Добавлено через 1 минуту благодаря этому гораздо сложнее передать куда-нибудь нулевой указатель и прострелить себе ногу.
0
|
![]() |
|
06.02.2016, 21:21 | 3 |
Различий много, и их неоднократно обсуждали на этом форуме.
Например: ссылка не может быть неинициализированной, компилятору проще оптимизировать работу с ссылкой, нежели с указателем и т.д. и т.п...
1
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
|
07.02.2016, 09:47 | 5 |
я настаиваю на том, чтобы понимать ссылку просто как саморазименовывающийся константный указатель. тогда все эти различия становятся очевидными. константный указатель тоже логически требует инициализации, ибо кому нужен указатель с мусором, который нельзя изменить, а из того, что он автоматически разименовывается следует, что он не может быть нулевым.
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
||||||
07.02.2016, 16:56 | 6 | |||||
Сделай такое с помощью константного указателя:
0
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
||||||
07.02.2016, 21:03 | 7 | |||||
nd2, так это
и есть временный объект типа инт, который уничтожится, когда умрет ссылка. со стороны языка этот литерал передается в конструктор инта, да?
0
|
![]() 8274 / 3850 / 837
Регистрация: 15.11.2014
Сообщений: 8,726
|
|
07.02.2016, 23:07 | 8 |
вы настаиваете на собственном невежестве.
да ну, пожалуйста. у нас - свободная страна.
0
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
||||||
08.02.2016, 10:58 | 9 | |||||
hoggy, просто великолепный комментарий в стиле русского коммьюнити. давайте забудем, что ссылки так или иначе реализованы через указатели и далеко не я придумал фразу implicitly de-reference constant pointer.
например здесь показано что код этих функций
мне в свое время очень помогло такое понимание ссылки и мне бы хотелось, чтобы я узнал его раньше.
0
|
Don't worry, be happy
|
||||||
08.02.2016, 11:36 | 10 | |||||
А мне хотелось бы, чтобы я понял раньше, что ссылка - это не разыменованный указатель.
Не важно во что оно разворачивается. Это разные вещи. Поедем в метапрограммирование сгоняем?
В данном случае, вывод будет разным. Можете посмотреть на код asm. Так что ссылка - это не просто разыменованный указатель, она реализует другую семантику, со своими правилами и граблям, что приводит к разному поведению. Даже несмотря на то, что она может быть реализована в виде указателя.
1
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
||||||
08.02.2016, 12:33 | 11 | |||||
значит во втором случае без метапрограммирования это будет выглядеть так
0
|
Don't worry, be happy
|
||||||
08.02.2016, 12:36 | 12 | |||||
Без метапрограммирования можно, например, написать и так:
1
|
2539 / 1198 / 358
Регистрация: 30.11.2013
Сообщений: 3,819
|
|
08.02.2016, 13:09 | 13 |
1
|
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
|
|
08.02.2016, 14:14 | 14 |
0
|
2 / 2 / 1
Регистрация: 28.09.2013
Сообщений: 253
|
|
08.02.2016, 14:48 | 15 |
ссылка ссылается (указывает) на объект, указатель указывает на область памяти
0
|
2539 / 1198 / 358
Регистрация: 30.11.2013
Сообщений: 3,819
|
|
08.02.2016, 15:19 | 17 |
Croessmah, разименнованый указатель - это адресс. В exe после линкера инструкции связок адрессов между собой, на данном этапе нету ни ссылок, ни указателей.
0
|
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
|
|
08.02.2016, 15:41 | 18 |
0
|
2539 / 1198 / 358
Регистрация: 30.11.2013
Сообщений: 3,819
|
|
08.02.2016, 15:47 | 19 |
Babysitter, переменная, что хранит адресс.
0
|
![]() |
|
08.02.2016, 19:22 | 20 |
0
|
08.02.2016, 19:22 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Передача в методы переменных ссылочных типов В чем отличие двумерного массива типа char от массива указателей на char?
Отличие приведение типов указателей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |