Índice:
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
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 #




