Косвенный оператор: *

* cast-expression

Заметки

Унарный косвенный оператор (*****разыменовывает указатель); иными словами, он преобразовывает значение указателя на l-значению.Операнд оператора косвенного обращения должен быть указателем на тип.Результат выражения косвенного обращения тип, из которого является тип указателя.Использование * оператор в этом контексте отличается от его значение binary, как оператор умножения.

Если точки операнда функций, результат указатель функции.Если он указывает на место хранения, то результат l-значение, обозначающая место хранения.

Косвенный оператор может использоваться кумулятивно для разыменования указателей к указателям.Примеры.

// expre_Indirection_Operator.cpp
// compile with: /EHsc
// Demonstrate indirection operator
#include <iostream>
using namespace std;
int main() {
   int n = 5;
   int *pn = &n;
   int **ppn = &pn;

   cout  << "Value of n:\n"
         << "direct value: " << n << endl
         << "indirect value: " << *pn << endl
         << "doubly indirect value: " << **ppn << endl
         << "address of n: " << pn << endl
         << "address of n via indirection: " << *ppn << endl;
}

Если значение указателя недопустимо, результат становится неопределенным.Ниже приведены некоторые наиболее распространенные условия, что сделает значение указателя.

  • Указатель на указатель null.

  • Указатель определяет адрес локального элемента, который не является видимым во время ссылки.

  • Указатель указывает адрес, которое неверно выравнивает для указанного типа объекта.

  • Указатель указывает адрес не используемый при выполнении программой.

См. также

Ссылки

Выражения с унарными операторами

Операторы C++

Operator precedence and Associativity

Оператор взятия адреса: &

Основные понятия

Косвенность оператора взятия адреса и