Lar Desenvolvimento O que é operador de indireção? - o que é techopedia

O que é operador de indireção? - o que é techopedia

Índice:

Anonim

Definição - O que significa operador Indirection?

Um operador de indireção, no contexto de C #, é um operador usado para obter o valor de uma variável para a qual um ponteiro aponta. Enquanto um ponteiro apontando para uma variável fornece um acesso indireto ao valor da variável armazenada em seu endereço de memória, o operador indireto desreferencia o ponteiro e retorna o valor da variável nesse local de memória. O operador indireto é um operador unário representado pelo símbolo (*).


O operador indireto pode ser usado em um ponteiro para um ponteiro para um número inteiro, uma matriz unidimensional de ponteiros para números inteiros, um ponteiro para um caractere e um ponteiro para um tipo desconhecido.


O operador de indireção também é conhecido como operador de desreferência.

Techopedia explica operador de Indirection

O símbolo (*) é usado na declaração de tipos de ponteiros e na execução indireta de ponteiros, enquanto o operador 'address-of' () retorna o endereço de uma variável. Portanto, o operador indireto e o endereço do operador são inversos um do outro.


O C # permite o uso de ponteiros apenas em uma região insegura, o que implica que a segurança do código nessa região não é verificada pelo Common Language Runtime (CLR). Na região insegura, o operador indireto pode ler e gravar em um ponteiro. As seguintes instruções C # ilustram o uso do operador indireto:

  • int a = 1, b; // linha 1
  • int * pInt = & a; // linha 2
  • b = * pInt; // linha 3
Na primeira linha acima, a e b são variáveis ​​inteiras e a é atribuído um valor de 1. Na linha 2, o endereço de a é armazenado no ponteiro inteiro pInt (linha 2). O operador de desreferência é usado na linha 3 para atribuir o valor no endereço apontado por pInt para a variável inteira b.


O operador indireto deve ser usado para desreferenciar um ponteiro válido com um endereço alinhado ao tipo para o qual aponta, para evitar comportamentos indefinidos no tempo de execução. Não deve ser aplicado a um ponteiro nulo ou a uma expressão que não seja do tipo ponteiro, para evitar erros do compilador. No entanto, depois de converter um ponteiro nulo no tipo de ponteiro direito, o operador indireto pode ser usado.


Ao declarar vários ponteiros em uma única instrução, o operador indireto deve ser gravado apenas uma vez com o tipo subjacente e não repetido para cada nome de ponteiro. O operador de indireção é distributivo em C #, diferente de C e C ++. Quando o operador indireto é aplicado a um ponteiro nulo, ele resulta em um comportamento definido pela implementação. Como esse operador é usado em um contexto não seguro, a palavra-chave insegura deve ser usada antes dele, juntamente com a opção / unsafe durante a compilação. Esta definição foi escrita no contexto de C #

O que é operador de indireção? - o que é techopedia