powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / указатель на ссылку
9 сообщений из 9, страница 1 из 1
указатель на ссылку
    #39034273
ProgramGirl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Пожалуйста,поясните на примере,что значит нельзя создавать указатель на ссылку, как программно отображается это?
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034275
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
int a; // переменная
int& b = a; // ссылка
int* c = &b; // низзя взять адрес ссылки


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034315
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки стоило добавить еще строчку:
Код: plaintext
1.
2.
3.
4.
int a;
int &b = a;
int *c1 = &a;//просто указатель на a
int *c2 = &b;//тоже указатель на а


То есть взятие от ссылки адреса даст указатель на объект, на который эта ссылка указывает, адрес самой ссылки не получить. И в данном случае c1==c2.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034425
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Код: sql
1.
2.
3.
int a; // переменная
int& b = a; // ссылка
int* c = &b; // низзя взять адрес ссылки



Это почему бы то и нельзя взять адрес ссылки? Оператор взятия адреса от ссылки возвращает указатель на объект на который указывает ссылка.

Скорее всего автор топика имел в виду нечто подобное:
Код: plaintext
1.
typedef int &*MyInt;


Да, это неверно.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034426
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, сразу забыл дописать.

ProgramGirlчто значит нельзя создавать указатель на ссылку, как программно отображается это?

Указатель и ссылка суть одно и тоже — это адрес некоторой ячейки памяти, адрес некоторой переменной. Просто они имеют разный синтаксис. И у ссылки больше ограничений, но в этом её удобство и защита от ошибок программиста.

А программно это отображается так что «просто нельзя и всё». Это один из нюансов ограничения ссылок в С++. Вот указатель на указатель создавать можно. Но, не стоит думать что ссылки это — нечто ограниченное. Ссылки — это очень мощный инструмент.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034431
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgramGirlДоброго времени суток! Пожалуйста,поясните на примере,что значит нельзя создавать указатель на ссылку, как программно отображается это?

Создавать можно. Но, поскольку адрес ссылки -- это адрес переменной, на которую она ссылается (по определению),
то если указателю присвоить адрес ссылки, то указатель будет указывать на переменную, на которую ссылается
ссылка, а не на саму эту ссылку.

У ССЫЛКИ НЕТ СВОЕГО АДРЕСА , как ни странно.

Поэтому и нет указателя на ссылку, и быть не может.
Использовать указатель, инициализированный адресом ссылки при этом, естественно, можно, это не запрещено.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034433
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravУказатель и ссылка суть одно и тоже — это адрес некоторой ячейки памяти, адрес некоторой переменной. Просто они имеют разный синтаксис.

Не совсем, указатель и ссылка имеют разную семантику. Ссылка не может ссылаться ни на что в валидной программе.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034436
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivpetravУказатель и ссылка суть одно и тоже — это адрес некоторой ячейки памяти, адрес некоторой переменной. Просто они имеют разный синтаксис.

Не совсем, указатель и ссылка имеют разную семантику.
Я про это и писал.

MasterZivСсылка не может ссылаться ни на что в валидной программе.
Попробуем так:

Код: plaintext
1.
int const &ref = *static_cast<int const *>( nullptr );


Понятно, что вместо nullptr там мог бы быть любой указатель на int.

PS: А вообще, в валидной программе не может быть ошибок.
...
Рейтинг: 0 / 0
указатель на ссылку
    #39034478
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravMasterZivСсылка не может ссылаться ни на что в валидной программе.
Попробуем так:

Код: plaintext
1.
int const &ref = *static_cast<int const *>( nullptr );


Понятно, что вместо nullptr там мог бы быть любой указатель на int.

PS: А вообще, в валидной программе не может быть ошибок.

Как раз наличие такого кода автоматом делает эту программу невалидной.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / указатель на ссылку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]