Compartilhar via


Operador de indireção: *

* cast-expression

Comentários

O operador unário de indireção (*) removerá a referência de um ponteiro; ou seja, ele converterá um valor de ponteiro para um l-value. O operando do operador de indireção deve ser um ponteiro para um tipo. O resultado da expressão de indireção é o tipo do qual o tipo do ponteiro é derivado. O uso do operador * nesse contexto é diferente do seu significado como operador binário, que é de multiplicação.

Se o operando apontar para uma função, o resultado será um designador de função. Se ele apontar para um local de armazenamento, o resultado será um valor l que designa o local de armazenamento.

O operador de indireção pode ser usado cumulativamente para retirar as referências dos ponteiros para os ponteiros. Por exemplo:

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

Se o valor do ponteiro for inválido, o resultado será indefinido. A lista a seguir inclui algumas das condições mais comuns que invalidam um valor de ponteiro.

  • O ponteiro é um ponteiro nulo.

  • O ponteiro especifica o endereço de um item local que não está visível no momento da referência.

  • O ponteiro especifica um endereço que está alinhado de forma inadequada para o tipo do objeto apontado.

  • O ponteiro especifica um endereço não usado pelo programa em execução.

Consulte também

Referência

Expressões com operadores unários

Operadores C++

Operadores, precedência e associatividade C++

Operador Address-of: &

Conceitos

Operadores de indireção e endereço de