Operator pośredni: *

Składnia

* cast-expression

Uwagi

Jednoargumentowy operator pośredni (*) wyłuszcza wskaźnik, czyli konwertuje wartość wskaźnika na wartość l.. Operand operatora pośredniego musi być wskaźnikiem typu. Wynikiem wyrażenia pośredniego jest typ, z którego pochodzi typ wskaźnika. Użycie * operatora w tym kontekście różni się od jego znaczenia jako operatora binarnego, który jest mnożeniem.

Jeśli operand wskazuje funkcję, wynik jest oznaczeniem funkcji. Jeśli wskazuje on lokalizację magazynu, wynikiem jest l-wartość opisująca lokalizację magazynu.

Operator pośredni może służyć zbiorczo do wyłudzania wskaźników do wskaźników. Na przykład:

// 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;
}

Jeśli wartość wskaźnika jest nieprawidłowa, wynik jest niezdefiniowany. Następująca lista zawiera niektóre z najbardziej typowych warunków, które unieważniają wartość wskaźnika.

  • Wskaźnik jest pustym wskaźnikiem.

  • Wskaźnik określa adres lokalnego elementu, który nie jest widoczny w momencie odwołania.

  • Wskaźnik określa adres, który jest nieodpowiednio wyrównany dla typu wskazywanego obiektu.

  • Wskaźnik określa adres nieużywany przez program wykonujący.

Zobacz też

Wyrażenia z operatorami jednoargumentowymi
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operator Address-of: &
Operatory pośrednie i „Address-of”