Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 13

Передача по ссылке или указателю?

15.02.2013, 17:26. Показов 4022. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В каких случаях лучше передавать в функцию ссылки, а в каких указатели?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2013, 17:26
Ответы с готовыми решениями:

Передача по ссылке или по указателю
Класс А здесь минимальный в реальности у него много переменных. Как лучше поступить в таком случае? Удобнее выпольнить передачу по ссылке,...

Передача в функцию по ссылке или указателю
Гуру C++, как предпочтительнее делать?:) void f1(int &a) { a = 5; } void f2(int * a) {

Передача параметров в функцию по значению, по ссылке или по указателю
Передача параметров в функцию по значению, по ссылке или по указателю. Чем отличаются эти 3 способа. И, если не сложно, привести...

26
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
16.02.2013, 07:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Зачем делать ф-цию если можно сделать класс и его метод... и без указателей...
а метод класса это не функция не? та же самая функция, только используется объектами класса. я вообщето методы и имел ввиду. Хотелось бы увидеть добавление листьев в бинарное дерево с использованием ссылок, честно хотябы ради просто увидеть, потому что я не особо это себе представляю
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
16.02.2013, 08:12
Цитата Сообщение от 0x10 Посмотреть сообщение
Реальный пример когда это необходимо.
Цитата Сообщение от MrGrig Посмотреть сообщение
Хотелось бы увидеть добавление листьев в бинарное дерево с использованием ссылок,
Ок, протупил.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
16.02.2013, 10:34
Ссылка лишь обертка, которая дополняет, а не заменяет указатели.
Область применения того и другого в C++ определяется конкретной ситуацией.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
16.02.2013, 10:40
Цитата Сообщение от Pravednik Посмотреть сообщение
В каких случаях лучше передавать в функцию ссылки, а в каких указатели?
Ссылка не позволит удалить аргумент нафиг, указатель лучше для массива, так как адрес ссылки этом случае всё равно придётся присвоить указателю, а иногда бывает полезней всех ссылка на указатель.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.02.2013, 14:19
Цитата Сообщение от Croessmah Посмотреть сообщение
Ссылка лишь обертка, которая дополняет, а не заменяет указатели.
Область применения того и другого в C++ определяется конкретной ситуацией.
Совершенно согласен. И по тому как задан вопрос, ответ:
Передача по ссылке или указателю?
вполне это раскрывает. Указатели значительно шире, ссылки уже безопаснее и удобнее (тема для вечной полемики)).
Но язык это соглашение. И поскольку нет возможности написать конструктор копии без использования ссылки (просто по определению, т.к. теоретически и передача указателя тоже гарантирует предотвращение создание копии объекта. То что сам указатель копируется не проблема) то и не обойтись без ссылок как типа.
Но всё раскручивается по обычной спирали. Новичок столкнулся с главой "Ссылки и указатели", а дискуссия давно вышла из границ его понимания.
Мешает пониманию и то, что передача указателя, тоже является видом передачи "по ссылке", чисто терминологически и это встречается в литературе.

Однако ссылка и указатель не как способы передачи а как типы, определяются тем же что и типы: способ и место хранения, допустимые операции...
И разница тут огромна. Указатель - указывает на тип (массив типа, вернее, то есть область памяти которая распределена определённым образом). Даже указатель на одно значение, - указатель на массив из одного члена и обратиться можно по индексу 0)). Его тип в конечном счёте, без инициализации, не завершён в определении. Декларация и инициализации могут быть проведены раздельно, что позволяет использовать мощь указателей. В том числе и для стрельбы в ногу. Преимуществ без недостатков не бывает.
Ссылка, по определению не может быть неинициализирована. Она сразу связана. В контексте, автоматически предоставляет то, что требуется по смыслу: адрес или значение . Само имя переменной является ссылкой на себя и это позволяет передавать переменные туда, где ожидается ссылка, без каких-либо дополнительных усилий.
Кроме того, сама ссылка как переменная не требует выделения памяти.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
16.02.2013, 16:52
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Что значит противоречит? указатель я могу в любое время перенаправить с одного объекта на другой, или разрушить ранее хранимый по указателю объект и построить новый. Пример привести что ли?
Ссылки думаешь позволят это???
А также перевести на мусор, уничтожить уже уничтоженный объект, еще не выделенный итп. (Я вообще про указатели не говорил например, я отвечал на твое перенаправь ссылку, перенаправь ссылку). Твои претензии к ссылкам в с++ такие же как претензия почему синус нуля не равен единице? Почему? По определению.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
16.02.2013, 17:25
Цитата Сообщение от alex_x_x Посмотреть сообщение
А также перевести на мусор
Ну если так рассуждать, то надо писать вообще только на Яве. А я сам знаю, где у меня мусор, где нет, от чего может течь память и как этого не допустить.
К тому же я говорю о реальных ситуациях,
- когда нужно изменить поведение объекта по указателю на базовый класс, удалив один потомок этого класса и сконструировав другой.
- динамические списки/деревья, в которых каждый элемент хранит указатель на следующий и этот указатель изменяется по мере вставки/удаления элементов.
- хранить указатели на какие-нибудь одни данные в нескольких классах, обрабатывающих их каждый по своим принципам, при этом исходный набор данных увеличивается/уменьшается динамически.
...
и.т.д.
Вот и остаётся у ссылок работа лишь заменять указатели в объявлениях функций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2013, 17:25

Передача по указателю и по ссылке
Всем привет! Есть функция, в которую передается ссылка: void Compare(int &p) { int * str = p;// здесь ошибка нельзя...

Передача аргументов в функцию по ссылке и указателю
Чем отличается передача по ссылке от передачи по указателю аргументов в функцию?

Передача параметров в функцию по значению, по ссылке и по указателю
Доброе время суток товарищи программисты. Столкнулся с кучей ошибок в написании простой программы. Задача заключается в том чтобы написать:...

Почему передача по ссылке не работает, только по указателю?
#include <iostream> #include<windows.h> #include<ctime> using namespace std; void input(int*,int); int main() { ...

Передача параметров функции по значению, ссылке и указателю
Вычислить F=f(a)-5f^3(sin(b/2))+1/f(1+c^4), де f(x)=3x^2-2x^2+7, при a=5.08, b=-0.65, c=3.87 Добавлено через 45 минут #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
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
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru