Форум программистов, компьютерный форум CyberForum.ru

Что такое ссылка на самом деле? - C++

Восстановить пароль Регистрация
 
Hagrael
БТР - мой друг
 Аватар для Hagrael
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
16.06.2012, 17:24     Что такое ссылка на самом деле? #1
Здравствуйте. Насколько я понимаю, ссылка - это переменная, которая на самом деле является указателем на адрес другой переменной, но с которой можно обращаться так, как будто бы это переменная, располагающаяся по адресу, на который она указывает. Т. е.:
C++
1
2
3
4
5
6
int& a = b   =>   int* a = &b // если b - переменная
int& a = b   =>   int* a = b // если b - ссылка
a = c   =>   *a = c // если c - переменная
a = c   =>   *a = *c // если c - ссылка
d = a   =>   d = *a // если d - переменная
d = a   =>   *d = *a // если d - ссылка
Правильно ли я все понимаю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 17:24     Что такое ссылка на самом деле?
Посмотрите здесь:

C++ ошибки которых на самом деле нет
C++ На самом деле #define'а нету.
Что содержит ссылка? C++
Число double 0.1 на самом деле не 0.1 C++
C++ Передача массива в функцию - что на самом деле предается?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2012, 17:35     Что такое ссылка на самом деле? #2
сылка эквивалентна константному разыменнованому указателю
C++
1
2
3
4
5
//int* const p; //ошибка - неициализированая константа
int a, b;
int* const p = &a; 
p = &a; //ошибка - изменение константы
std::cout << *p;
Выводы:
1) ссылка всегда инициализирована(3-я строка)
2) ссылка не может указывать на другой объект(4-я строка)
ну и в дополнение - ссылка неможет быть нулевой
Hagrael
БТР - мой друг
 Аватар для Hagrael
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
16.06.2012, 19:58  [ТС]     Что такое ссылка на самом деле? #3
А записи, которые я сделал, правильны?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.06.2012, 12:44     Что такое ссылка на самом деле? #4
Цитата Сообщение от Hagrael Посмотреть сообщение
А записи, которые я сделал, правильны?
из твоих записей правильны только и то с модификациями
C++
1
2
3
int& a = b => int* const a = &b // если b - переменная или ссылка
a = c   =>   *a = c // если c - переменная
d = a   =>   d = *a // если d - переменная
в остальных же записях ты неучитываешь тот факт что
Цитата Сообщение от Jupiter Посмотреть сообщение
сылка эквивалентна константному разыменнованому указателю
т.е. ссылку не надо разыменовывать
Hagrael
БТР - мой друг
 Аватар для Hagrael
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
17.06.2012, 13:11  [ТС]     Что такое ссылка на самом деле? #5
Понял, спасибо.
Yandex
Объявления
17.06.2012, 13:11     Что такое ссылка на самом деле?
Ответ Создать тему
Опции темы

Текущее время: 05:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru