C/C++
С++. Спросил на cyberforum, хранятся ли ссылки в памяти или нет, очень сильное разногласие, ответьте пж
Смотря какой ЯП. Если брать подобие Delphi, то хранится. Если брать dot.net(C#,etc), тогда ссылка на объект уничтожается сразу после последнего обращения к ней - сборщик мусора (гарбедж колектор)
Бекбау Слямшаихов
С++
Бекбау Слямшаихов
но ссылка вроде хранится статически а не динамически
Ссылка - удобный способ "спрятать" указатель. Место для хранения не выделяется ( компилятору адрес и так известен )
Каким образом информация может не храниться в памяти? Тогда где она хранится? Может в астрале?
Надо смотреть пример, где, по твоему мнению, ссылка может не храниться в памяти.
Надо смотреть пример, где, по твоему мнению, ссылка может не храниться в памяти.
Бекбау Слямшаихов
я думал что ссылка это псевдоним переменной
Ссылка - существует только в компиляторе.
int a = 1;
int&sa = a;
sa++;
заменится на int a = 1; a++. ссылка из программы исчезнет. Она нужна только как способ передачи данных в функции. По умолчанию используется старая и безопасная передача по значению. А если по ссылке - то непосредственно сама переменная крутится в функции.
int a = 1;
int&sa = a;
sa++;
заменится на int a = 1; a++. ссылка из программы исчезнет. Она нужна только как способ передачи данных в функции. По умолчанию используется старая и безопасная передача по значению. А если по ссылке - то непосредственно сама переменная крутится в функции.
Aлихан Tолен
> Ссылка - существует только в компиляторе
Это потому что в данном примере ссылка не нужна. Можно написать другой пример, где ссылка будет по сути указателем, который должен где-то храниться.
Это потому что в данном примере ссылка не нужна. Можно написать другой пример, где ссылка будет по сути указателем, который должен где-то храниться.
Uigur Alisher
Буду рад увидеть такой пример.
Uigur Alisher
Указатель - обычная переменная хранящая тип данных - адрес.
В примере выше &r очевидно является псевдонимом для a или b. В коде будет cout << (rand()%2?a:b) << endl;
В контексте функции ссылка не попадает в последнюю. Попадает реальная переменная. Ссылка лишь означает "Тут могла бы быть ваша переменная".
В примере выше &r очевидно является псевдонимом для a или b. В коде будет cout << (rand()%2?a:b) << endl;
В контексте функции ссылка не попадает в последнюю. Попадает реальная переменная. Ссылка лишь означает "Тут могла бы быть ваша переменная".
Ссылка в памяти, как и переменная, может храниться до выхода из области видимости в работающей программе.
Ссылки и переменные на самом деле - это просто уникальные адреса памяти, выделенные данной программе во время её работы. Выделяемые программе ресурсы строго ограничены и используются временно, особенно в многозадачной среде выполнения.
Если своевременно не высвобождать мусор в виде ненужных ссылок и переменных, вышедших из области видимости, то выделенный несколькомегабайтный стек программы будет переполнен и рухнет.
Если бы это было не так, то для программ делали бы многогигабайтные стеки данных при запуске. Тогда бы на компе одновременно могли бы работать 1-2 программы, и не было бы нормальной многозадачности и скорости работы.
Ссылки и переменные на самом деле - это просто уникальные адреса памяти, выделенные данной программе во время её работы. Выделяемые программе ресурсы строго ограничены и используются временно, особенно в многозадачной среде выполнения.
Если своевременно не высвобождать мусор в виде ненужных ссылок и переменных, вышедших из области видимости, то выделенный несколькомегабайтный стек программы будет переполнен и рухнет.
Если бы это было не так, то для программ делали бы многогигабайтные стеки данных при запуске. Тогда бы на компе одновременно могли бы работать 1-2 программы, и не было бы нормальной многозадачности и скорости работы.
Бекбау Слямшаихов
тоесть ссылка = псевдоним переменной или ссылка = указатель вместо * сразу &, и тем самым если в ссылку не добавить & то получим значение обьекта на который она указывает, а в указателе получим адрс обьекта на который указываем тем самым если добавим & и к ссылке и к указателю, то с указателем понятно и мы получим адрес указателя а почему тогда ссылка получит адрес обьекта, и почему не возможно получить адрес ссылки если можно получить адрес указателя?
Бекбау Слямшаихов
ссылка = переменная и указатель одновременно
Похожие вопросы
- С++ СИРИУС КУРСЫ ОТВЕТЬТЕ ПЖ ПОЛНЫМ КОДОМ
- ПОМОГИТЕ ПОЖАЛУЙСТА НАПИСАТЬ ПРОГРАММУ НА С++ В базе хранятся сведения о сотрудниках предприятия. Каждая запись содержит
- Где хранится метка массива.
- С++ структуры. Помогите ппжпж жпж пж ж
- Помогите задачку зарешать пж
- Если приложение вызывает утечку памяти, то при завершение работы приложения динамическая память очиститься или нет?
- C++ и динамическая память: это приемлемо?
- Устройство статических и динамических массивов в оперативной памяти (...)
- Программирование, динамическое выделение памяти в конструкторе класса
- Ссылки и указатели