int a;
int *p = &a; // указатель
int &r = a; // ссылка на a
int *& rp = p; // ссылка на указатель p
int &t = *p; // А это бред, потому что ссылка может быть на переменную, *p (оператор разыменования указателя) дает значение переменной, а вовсе не переменную. Поэтому компилятор матерится.
а в первом варианте
int u=1;
int &t=u;
int *p=&t;
У тебя не указатель на ссылку, а указатель на переменную u, которую дает ссылка.
Другие языки программирования и технологии
C++ указатель на ссылку, ссылка на указатель что можно создать и пример кода если нетрудно.
HANDLE, int &t = *p; // А это бред, потому что ссылка может быть на переменную, *p (оператор разыменования указателя) дает значение переменной, а вовсе не переменную. Поэтому компилятор матерится
- неверно. Всё канает.
Оператор разыменования возвращает ссылку, а не значение. Если бы возвращалось значение, то любое косвенное обращение к членам сложного типа вызывало бы копирование экземпляра, а полиморфизм можно было бы выкидывать в топку.
Указатель на ссылку создать нельзя, ибо ссылка - вообще не объект, с точки зрения языка у неё нет собственного значения. Ссылка на указатель - int *& rp = n;
- неверно. Всё канает.
Оператор разыменования возвращает ссылку, а не значение. Если бы возвращалось значение, то любое косвенное обращение к членам сложного типа вызывало бы копирование экземпляра, а полиморфизм можно было бы выкидывать в топку.
Указатель на ссылку создать нельзя, ибо ссылка - вообще не объект, с точки зрения языка у неё нет собственного значения. Ссылка на указатель - int *& rp = n;
& - ссылка, говоря проще, это можно перевести, как адрес, т. е. выражение &x - это будет адрес переменной х.
* - это указатель, который можно перевести, как "по адресу"
Т. е если указателю *p присвоить значение x, то мы получим указатель на эту ссылку:
int x, *p;
x=10;
p=&x;
*p=*p+1; // после применения такого выражения, переменная x станет 11,тому что мы
// присвоили указателю p значение адреса переменной x и обратились напрямую
// к этому адресу (*p=*p+1), а не к его локальной копии
* - это указатель, который можно перевести, как "по адресу"
Т. е если указателю *p присвоить значение x, то мы получим указатель на эту ссылку:
int x, *p;
x=10;
p=&x;
*p=*p+1; // после применения такого выражения, переменная x станет 11,тому что мы
// присвоили указателю p значение адреса переменной x и обратились напрямую
// к этому адресу (*p=*p+1), а не к его локальной копии
Похожие вопросы
- Указатели и ссылки в c++
- VS 2010 C++ error LNK2019: ссылка на неразрешенный внешний символ
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся
- C++ Указатели и функции.
- Объясните мне указатели и ссылки в С++. Для чего они нужны?
- Кто-нибудь знает хорошие учебники по OpenGL или DirectX для C++? Дайти плз ссылки)
- (C++)Господа опытные программисты, прошу объяснить холопу-новичку что не так с кодом
- Объясните пожалуйста на бытовом языке, что такое указатель в СИ, приведите бытовой пример, описывающий эту операцию?
- дайте пример кода искусственного нейрона
- Зачем в С/C++ создан отдельный тип "указатель"