Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что возвращает оператор разыменования указателя в C++?

Андрей Симонович Мастер (1892), открыт 1 неделю назад
Возвращает он само значение или ссылку на значение? При передаче разыменованного указателя в decltype, он возвращает ссылочный тип.
3 ответа
Николай Веселуха Высший разум (360854) 1 неделю назад
Значение по адресу, который хранит этот указатель. Значения все ссылочного типа. Есть rvalue, lvalue и это не полный список. https://habr.com/ru/articles/348198/
Jurijus Zaksas Искусственный Интеллект (425767) 1 неделю назад
Значение возвращает. Но это значение тоже вполне себе может быть указателем :)
Def Просветленный (37266) 1 неделю назад
>При передаче разыменованного указателя в decltype, он возвращает ссылочный тип.
Нет, неверно. Возвращает тот тип, на который указывает указатель, в том числе, например, базовый

 #include  
using namespace std;

int main()
{
int v = 10;
int* p = &v;
cout << "Pointer type: " << typeid(decltype(p)).name() << endl;
cout << "Dereferenced pointer type: " << typeid(decltype(*p)).name() << endl;
return 0;
}
Вывод:
 Pointer type: int * __ptr64 
Dereferenced pointer type: int
ПапаВысший разум (122375) 1 неделю назад
Если бы это было так, то конструкция
 *p = 20; 
не работала бы.
Def Просветленный (37266) Папа, ничего не мешает базовому типу принимать значения, т.е. быть lvalue. int p = 20;
Похожие вопросы