0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 13
|
|
1 | |
Передача по ссылке или указателю?15.02.2013, 17:26. Показов 3378. Ответов 26
Метки нет (Все метки)
0
|
15.02.2013, 17:26 | |
Ответы с готовыми решениями:
26
Передача по ссылке или по указателю Передача в функцию по ссылке или указателю Передача параметров в функцию по значению, по ссылке или по указателю Передача по указателю и по ссылке |
15.02.2013, 17:30 | 2 |
0
|
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
|
||||||
15.02.2013, 18:28 | 3 | |||||
Указатели же то же не просто так придумали =)
Достаточно хорошо всё рассказано От себя добавлю, хотя скорее всего это и не так. В общем я указатели отправляю для того чтобы изменить выделяемую им память типо такого
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
15.02.2013, 18:32 | 5 |
0
|
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
|
|||||||||||
15.02.2013, 19:48 | 7 | ||||||||||
сказал же для примера =/
вот еще один пример
и когда нашли вызывают создание нового листка
это я про то что если в синтаксисе языка есть указатели, значит не просто так.
0
|
15.02.2013, 20:37 | 9 |
Ссылка - это псевдоним для уже существующей переменной. Таким образом, если к моменту вызова такая переменная (именованная область памяти) у вас уже есть, то синтаксически удобнее и безопаснее использовать ссылку (под капотом - это тот же указатель).
Указатель опаснее тем, что может указывать на несуществующую область памяти (еще не выделенную или уже освобожденную), но этим же и удобнее, если вы не забываете проверять и обрабатывать условие == NULL. Думаю, можно руководствоваться правилом: где возможно и логично (не требуется создавать фиктивные объекты) использовать ссылки, где нельзя (для изначально не существующих объектов) - указатели. Ставьте во главу угла не религиозный фанатизм "Refs vs Ptrs", а удобство написания, чтения и сопровождения кода. Востребованные программы живут неожиданно долго. Ну, кто из программистов на Cobol-60 задумывался о проблеме Year2000 :-)
2
|
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 13
|
|
15.02.2013, 23:21 [ТС] | 10 |
я не пойму зачем вообще ссылка нужна, если ее можно заменить константным указателем типа int* const a = &b
0
|
Комп_Оратор)
|
|
16.02.2013, 01:09 | 12 |
Ссылками, чаще всего объявляют формальные параметры функций, если нужно передать не копию, а адрес, то есть изменить значение. Тогда передавать можно прямо, имя переменной этого типа, ничего больше не делая. То есть ссылку в коде, перед вызовом создавать не нужно (хотя при желании и это можно ). В теле же функции, не требуется никаких разыменований и это легко читаемо и компактно.
Время от времени и довольно регулярно, возникают споры о том, что дескать, "если не обратить внимание" на объявление функции, можно получить не то, что ожидал и пр. Потому как код не отличается от кода функции с аргументом - значение. Но это же вещи, на которые нельзя не обратить внимание. В общем, вопрос сугубо индивидуальный.
1
|
16.02.2013, 01:23 | 13 |
Ну так именно! Наконец то и ты и все начинают понимать, что лучше придерживаться стиля Си
Добавлено через 2 минуты она много чем не может быть и это создаёт кучу проблем. Например, я не знаю способа перенаправить ссылку с одного объекта на другой. Не могу проинициализировать её нулём и провести инициализацию после объявления. Область применения ссылок практически полностью (ИМХО) ограничена передачами в/из функций.
0
|
16.02.2013, 01:44 | 15 |
Так ты знаешь способ?
Кстати("перенаправить ссылку с одного объекта на другой."), вполне себе объектно-ориентированная задача. И в плюсах встречается не реже, чем в Сях.
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
16.02.2013, 02:59 | 16 | |||||
Попробуй повторить это без использования ссылок
2
|
Комп_Оратор)
|
||||||
16.02.2013, 03:12 | 17 | |||||
И это, наверное, нельзя по-другому:
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
16.02.2013, 03:13 | 18 |
С учётом того, что это противоречит определению самой ссылки в с++ (она не равнозначна ссылке в java или c#) - конечно часто встречается
0
|
16.02.2013, 04:14 | 19 |
Что значит противоречит? указатель я могу в любое время перенаправить с одного объекта на другой, или разрушить ранее хранимый по указателю объект и построить новый. Пример привести что ли?
Ссылки думаешь позволят это???
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
16.02.2013, 04:42 | 20 |
0
|
16.02.2013, 04:42 | |
16.02.2013, 04:42 | |
Помогаю со студенческими работами здесь
20
Передача аргументов в функцию по ссылке и указателю Передача параметров в функцию по значению, по ссылке и по указателю Почему передача по ссылке не работает, только по указателю? Передача параметров функции по значению, ссылке и указателю Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |