С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Указатели или ссылки (в качестве аргументов функции) ? - C++

23.05.2013, 10:23. Просмотров 2059. Ответов 55
Метки нет (Все метки)

В каких случая надо использовать ссылки и в каких указатели в качестве аргументов функции?
В общем поняла, что и те и другие полезны для ссылания на крупные обьекты типа классов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 10:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели или ссылки (в качестве аргументов функции) ? (C++):

Нюансы синтаксиса и семантики: ссылки, указатели и массивы в качестве аргументов функций - C++
Перенесено из этой темы. Чтобы вернуть указатели почему вот здесь не надо приводить janr к типу указателя char* на выходе? char*...

Указатели на массивы в качестве аргументов - C++
Помогите пожалуйста а то вообще идей никаких нет( Напишите функцию поиска минимального элемента в динамическом двухмерном массиве...

Константные указатели в качестве аргументов функций - C++
Вскрылся вот такой пробел в знаниях/понимании. Итак, есть предположим однонаправленный список (в общем без разницы что). struct TNode {...

С++ Тема «Указатели и динамические массивы. Использование указателей в качестве аргументов функций» - C++
В целочисленном массиве Х(N) удалить все элементы, расположенные между макси-мальным и минимальным элементами. Найти среднее арифметическое...

Идентификаторы списка в качестве аргументов функции - C++
Хочу организовать поиск по списку с помощью функции, в которую бы передавались: поле, по которому искать (собсно какая-то переменная из...

Использование массивов в качестве аргументов функции - C++
Написала программу, работает правильно, только не совсем по условию задачи. Помоги пожалуйста исправить. Условие: найти наибольшую...

55
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.05.2013, 10:49 #31
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
Как так? Под именем оператора сложения что ли? Так писать нельзя, это источник глюков. Или меняет объект, от которого вызвал? Ну так на то это и присваивание. Сложение то здесь при чём?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 10:56  [ТС] #32
Цитата Сообщение от taras atavin Посмотреть сообщение
Как так? Под именем оператора сложения что ли? Так писать нельзя, это источник глюков. Или меняет объект, от которого вызвал? Ну так на то это и присваивание. Сложение то здесь при чём?
нет, там было только присваивание = без +=
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.05.2013, 12:05 #33
Цитата Сообщение от programina Посмотреть сообщение
нет, там было только присваивание = без +=
Ну так присваивание, как простое, так и составное, как раз и должно менять сам объект, в отличие от сложения. Охотника же явно глюк попутал.
0
programina
24.05.2013, 12:14  [ТС]
  #34

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Охотника же явно глюк попутал.
он же охотник, его леший попутал
А вообще не ошибается тот, кто ничего не делает

0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 13:32 #35
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
Доставайте объекты из пула, чтобы избежать их создания, но вопрос стоит ли оно этого в данном случае.
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
operator+ не должен изменять объект, а должен работать именно так, как ожидает клиент.
C++
1
2
int a=3,b=5;
a+b;
У Вас же a в данном случае не меняется.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.05.2013, 13:35 #36
Цитата Сообщение от Croessmah Посмотреть сообщение
operator+ не должен изменять объект, а должен работать именно так, как ожидает клиент.
C++
1
2
int a=3,b=5;
a+b;
У Вас же a в данном случае не меняется.
Как он должен работать и как всё рано напишет какое нибудь чудило - далеко не одно и тоже, иначе глюков бы не было.
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
24.05.2013, 14:21 #37
Цитата Сообщение от ForEveR Посмотреть сообщение
UB ж.
Не понял твоего сообщения. Поясни.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 14:25  [ТС] #38
Цитата Сообщение от Vourhey Посмотреть сообщение
Не понял твоего сообщения. Поясни.
undefined behavior
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
24.05.2013, 14:38 #39
В каком компилере?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 14:46  [ТС] #40
Цитата Сообщение от Vourhey Посмотреть сообщение
В каком компилере?
в любом стандартном компилере
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 14:56 #41
Цитата Сообщение от Vourhey Посмотреть сообщение
Поясни
C++
1
2
    int *a=NULL;
    int &b = *a;
Имеется ввиду разыменование NULL
А потом еще и значение по нему прописать
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
24.05.2013, 15:25 #42
Цитата Сообщение от taras atavin Посмотреть сообщение
Как он должен работать и как всё рано напишет какое нибудь чудило - далеко не одно и тоже, иначе глюков бы не было.
Какое-нибудь чудило может просто разыменовать nullptr, например, или сделать ещё миллион других вещей, которые приводят к неочевидному или непредсказуемому поведению.
0
Dmitriy_M
1363 / 1246 / 114
Регистрация: 20.03.2009
Сообщений: 4,462
Записей в блоге: 11
24.05.2013, 15:42 #43
Цитата Сообщение от programina Посмотреть сообщение
В каких случая надо использовать ссылки и в каких указатели в качестве аргументов функции?
Марш читать "Брайан Керниган, Деннис Ритчи: Язык программирования C", а потом
"Бьерн Страуструп. Язык программирования С++", и найди несколько отличий.
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
24.05.2013, 17:05 #44
Цитата Сообщение от programina Посмотреть сообщение
в любом стандартном компилере
Проверь-ка.
Цитата Сообщение от Croessmah Посмотреть сообщение
Имеется ввиду разыменование NULL
Для взятия ссылки компилятор не станет разыменовывать указатель. При операции со ссылкой он просто возьмет значение указателя - адрес и сохранит его в ссылке. Разыменовывание его заинтересует, если бы слева была не ссылка. Теоретически, может, и UB, на практике не встречал. Собственно, поэтому и поинтересовался, какой компилер так сделает. Чисто с практической точки зрения интересно взглянуть на скомпилированный код.
Цитата Сообщение от Croessmah Посмотреть сообщение
А потом еще и значение по нему прописать
Значение не должно интересовать компилятор, когда слева стоит ссылка.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 17:14 #45
Цитата Сообщение от Vourhey Посмотреть сообщение
Значение не должно интересовать компилятор, когда слева стоит ссылка.
Компилятор не должно, а вот во время выполнения...
0
24.05.2013, 17:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 17:14
Привет! Вот еще темы с ответами:

Ostream и ofstream в качестве аргументов полиморфной функции - C++
Здравствуйте! Перегрузил оператор << с ostream и ofstream для пользовательского класса. ofstream &operator << (ofstream &output,...

Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов - C++
Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов. Если аргумент только один,...

функции,указатели и ссылки. - C++
Всем привет! Задали простецкую задачу. решите пожалуйста Написать программу в которой есть три функции, которые должны вычислять...

Дан файл, переписать его в обратном направлении, передавая имена файлов в качестве аргументов функции main - C++
Здравствуйте! Помогите, пожалуйста! Дан файл, переписать его в обратном направлении, передавая имена файлов в качестве аргументов функции...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.