Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/47: Рейтинг темы: голосов - 47, средняя оценка - 4.85
-80 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 812

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

11.02.2016, 15:47. Показов 11021. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем здравия, прошу прощения, что достал уже всех этой темой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
 
int my_attemp(int y)
{
    y = 9;
    cout << "     " << y << endl;
    return y;
}
void setvalue(int* x)              // Создаем функцию, которая будет работать с адресом
{
    *x = 1;                        // по какому-то адресу размещаем 1
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int k = 0, z;
    setvalue(&k);                  // Вызываем функцию и помещаем в нее адрес переменной
    cout << k << endl;             // Величина переменной изменилась после вызова функции
    my_attemp(k);                  // Вызываем функцию и помещаем в нее переменную 
    cout << k << endl;             // Величина переменной НЕ изменилась после вызова функции
    z = my_attemp(k);
    cout << "    " << z << "    " << k << endl;
 
 
    system("pause");
    return 0;
}
Вызываем функцию помещаем в нее адрес переменной, значение переменной меняется в main() функции.
Вызываем функцию помещаем в нее саму переменную, значение переменной НЕ меняется в main() функции.
Пожалуйста не используйте в объяснении бранные эпитеты.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2016, 15:47
Ответы с готовыми решениями:

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

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

Передача параметров по указателю, ссылке и значению
Задание: Вычислить Y(x) и S(x). (где x принадлежит диапазону ) Y(x) и S(x) реализовать в виде отдельных функций. Продемонстрировать ...

72
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.02.2016, 00:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
Можно открыть стандарт и посмотреть. Там написано - ссылка - это тип.
Я знаю. Но я говорил о доказательстве и наш разговор, это противостояние упорства и упорства. Причем, несмотря на то, что Вы озвучиваете то, что является принятой точкой зрения не прибавляет доказательности.
Цитата Сообщение от DrOffset Посмотреть сообщение
Мы и (надеюсь) не ссорились.
Разумеется. Я имел ввиду мир в значении покой и бо-ольшущую вселенную. В которой ссылку сделали типом из-за чего уши у нее оттянуты как у спаниеля и рисуются как &. Эт я шучу.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
14.02.2016, 00:14
Цитата Сообщение от DrOffset Посмотреть сообщение
Можно открыть стандарт и посмотреть. Там написано - ссылка - это тип.
давно ж надо было
3.9.
8. An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not a void type.

3.9.2
1. Compound types can be constructed in the following ways:
— references to objects or functions of a given type, 8.3.2. There are two types of references:
— lvalue reference
— rvalue reference

8.3.2
4. It is unspecified whether or not a reference requires storage
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.05.2016, 13:09
Цитата Сообщение от Kastaneda Посмотреть сообщение
Результат разыменования указателя есть объект, а не ссылка на объект
А кому станит хуже если назвать результат данной операции ссылка ? Как по мне при разыменовании назвать то, что получилось ссылкой весьма последовательно, учитывая фактичное место расположение объекта, говорить о телепартации не верно наверно, а вот о проекции(илюции) объекта( его ссылки ) думаю можно)
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.05.2016, 13:15
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А кому станит хуже если назвать результат данной операции ссылка ?
Cсылка конечно. Объект это часть памяти. Хотя и это условно. Это же не кусок микросхемы.
Мне нравится наблюдать такие диалоги. И участвовать в них.
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.05.2016, 13:17
Цитата Сообщение от IGPIGP Посмотреть сообщение
Cсылка конечно
Дочитую тему потихоньку и что-то Страуструп как всегда ((( https://www.cyberforum.ru/post8742223.html
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.05.2016, 13:36
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
что-то Страуструп как всегда
Прав имеете ввиду? И я согласен.
В ссылке написано, что результатом разыменования является ссылка lvalue. Что ещё надо написать? Что если указатель указывал на константу, то не lvalue получится? Всего не напишешь.
А далее самое интересное: типом результата разыменования указателя на Т является тип T (!!!).
Я же и говорю, что ссылка не имеет собственного типа. Она указывает на объект какого-то типа.
Но забавно видеть, как столпы логики делают с ней всё что угодно. Хотя с другой стороны, кому же как не им-то? Они же столпы? Или столбы? Как правильно, rikimaru2013?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
31.05.2016, 09:38
IGPIGP, я только за то, чтобы внятнее писать стандарт) вечно двухсмысленность проскальзывает, да и не все понятия раскрыты - к примеру, что такое наследование стандарт не объясняет, но использует его в своём декларировании правил поведения.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
31.05.2016, 09:55
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
к примеру, что такое наследование стандарт не объясняет
потому что наследование - это термин ООП, а не С++. Сам же Стандарт - это скорее требования к реализации, чем разъяснение языка.
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
31.05.2016, 09:58
Kastaneda, Ну моё мнение используете слово - дайте ему разъяснение в начале. И говорить "конструктор должен делать бифуксацию" и не дать понятие термину,это лучше промолчать)
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
31.05.2016, 11:17
rikimaru2013, тогда вначале стандарта нужно еще будет описать
что такое переменные, компилятор, линковщик, препроцессор и т.д.
Не зачем это нужно, а что это вообще такое.
Нужно будет пояснить, что компиляторы бывают разные.
А еще не забыть в самом начале алфавит и учебник по английскому языку добавить.
А то слова английские, их же не все понимают.

Обращаясь к документации, а стандарт - это именно документация,
Вы уже должны знать с чем имеете дело и зачем Вам это нужно.
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.05.2016, 12:37
Цитата Сообщение от Croessmah Посмотреть сообщение
тогда вначале стандарта нужно еще будет описать
Croessmah, не нужно. Если существуют иные стандарты на которые можно сослаться. Стандарт не может использовать нестандартные термины.
В серьезных правовых документах, обычно имеется раздел "Термины и определения". В отраслях есть соответствующие стандарты. Например:
http://www.rugost.com/index.ph... &Itemid=50
Если в стандарте Cpp имеются соответствующие ссылки, тогда этот документ соответствует понятию стандарт. Хотя конечно, хороший стандарт, это время и работа. Бесконечные. А всё написать нельзя, да и не за чем. Это тоже правда. Главное, чтобы не было дыр, ошибок, противоречий и неоднозначностей. "Полнота и точность" иными словами.
То есть, учитывая что стандарт Cpp постоянно расширяется отражая развитие языка, он не может быть совершенен.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
31.05.2016, 12:48
Цитата Сообщение от IGPIGP Посмотреть сообщение
Если в стандарте Cpp имеются соответствующие ссылки
Ну так пункты 1.2 и 1.3.
Но ссылок на учебники по ООП Вы там не найдете.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.05.2016, 13:17
Цитата Сообщение от Croessmah Посмотреть сообщение
Но ссылок на учебники по ООП Вы там не найдете.
На учебники и не делают. Делают на другие стандарты. Стандарт, это правовой документ, ссылаясь на который, можно писать тех. задания, договоры, решать споры между сторонами (заказчиками и исполнителями например). Иначе это не стандарт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2016, 13:17

Передача параметров функции по значению, ссылке и указателю
Вычислить 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...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
73
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru