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

Функция - принять ссылку вернуть ссылку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Грамматика программы http://www.cyberforum.ru/cpp-beginners/thread929770.html
Может ли мне кто-то наглядно объяснить что такое первичное выражение, чем оно отличается от обычного выражения. Что такое терм и чем он отличается от лексемы?
C++ Синтаксическая ошибка Здраствуйте. Помогите, пожайлуста, выявить синтаксическую ошибку в коде: #include <fstream> #include <iostream> using namespace std; int main() { ifstream ifs ("INPUT.TXT"); http://www.cyberforum.ru/cpp-beginners/thread929762.html
C++ Где можно купить эту книгу Дейтел Х., Дейтел П. - Как программировать на C++?
Где можно купить эту книгу Дейтел Х., Дейтел П. - Как программировать на C++???. И как думаете стоит ли после книги Ритчи и Кернингана Язык программирование си,начать читать книгу Страуструп...
C++ Пример из книги. Шилдт
Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не выводится сообщение) #include <iostream> using namespace std; class myclass{ public: int x; ...
C++ не выполняется параллельность на openmp http://www.cyberforum.ru/cpp-beginners/thread929714.html
Здравствуйте форумчане! В общем такая беда, ниже в одной программе два метода сортировки массивов, и я захотел чтобы эти 2 метода выполнялись параллельно и применил параметр sections, но как видно по...
C++ Студия 2010 В один прекрасный момент MSVS перестал мне при отладке показывать локальные переменные. Подскажите что с ним могло произойти? Может в настройках проекта что-то включить нужно? В другом проекте... подробнее

Показать сообщение отдельно
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,225

Функция - принять ссылку вернуть ссылку - C++

28.07.2013, 13:18. Просмотров 784. Ответов 6
Метки (Все метки)

В одной из тем я интересовался записью типа int & fun (int rhs), что она значит и что именно в ней делает символ &, как я понял, программа типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
 
int & fun (int rhs)
{ return rhs; }
 
int main()
{
int var = 2;
var  = fun(var );
 
system("pause");
return 0;
}
var имеет свой адрес в памяти, например 30000, мы передаем значение var в функцию, где оно копируется и получает новое имя rhs, и соответственно rhs имеет свой адрес в памяти, например 40000, а строчка 4 возвращает ссылку на адрес в памяти 40000, который уже был уничтожен (этот адрес уже не имеет отношения к данной программе), что вызывает ошибки т.д.

Подскажите, а если я делаю такую запись:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
 
int & fun (int &rhs)
{ return rhs; }
 
int main()
{
int var = 2;
var = fun(var);
 
system("pause");
return 0;
}
var имеет адрес в памяти 30000, я соответственно в функцию передаю уже не копию, а ссылку на адрес 30000, и возвращаю опять же ссылку на адрес 30000, который существует, не был уничтожен, т.е. данная запись работает полностью корректно.

И возвращение ссылки работает только в виде такой записи - int & fun (int &rhs) - принял ссылку, вернул ссылку.

Правильно ли я все понимаю? или бывает еще как то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru