Operador de indirección

Definición - ¿Qué significa operador de Indirección?

Un operador de indirección, en el contexto de C #, es un operador que se utiliza para obtener el valor de una variable a la que apunta un puntero. Mientras que un puntero que apunta a una variable proporciona un acceso indirecto al valor de la variable almacenada en su dirección de memoria, el operador de indirección elimina la referencia del puntero y devuelve el valor de la variable en esa ubicación de memoria. El operador de indirección es un operador unario representado por el símbolo (*).

El operador de indirección se puede utilizar en un puntero a un puntero a un número entero, una matriz unidimensional de punteros a números enteros, un puntero a un carácter y un puntero a un tipo desconocido.

El operador de indirección también se conoce como operador de desreferencia.

Techinfo explica el operador de Indirección

El símbolo (*) se usa para declarar tipos de puntero y para realizar indirección de puntero, mientras que el operador 'dirección de' () devuelve la dirección de una variable. Por tanto, el operador de indirección y el operador de dirección de son inversos entre sí.

C # permite el uso de punteros solo en una región insegura, lo que implica que la seguridad del código dentro de esa región no está verificada por Common Language Runtime (CLR). En la región insegura, el operador de indirección puede leer y escribir en un puntero. Las siguientes declaraciones de C # ilustran el uso del operador de indirección:

  • int a = 1, b; // línea 1
  • int * pInt = & a; // línea 2
  • b = * pInt; // línea 3

En la primera línea anterior, ayb son variables enteras y a a se le asigna un valor de 1. En la línea 2, la dirección de a se almacena en el puntero entero pInt (línea 2). El operador de desreferencia se usa en la línea 3 para asignar el valor en la dirección apuntada por pInt a la variable entera b.

El operador de indirección debe usarse para desreferenciar un puntero válido con una dirección alineada con el tipo al que apunta, para evitar un comportamiento indefinido en tiempo de ejecución. No debe aplicarse a un puntero vacío o una expresión que no sea de tipo puntero, para evitar errores del compilador. Sin embargo, después de lanzar un puntero vacío al tipo de puntero derecho, se puede utilizar el operador de indirección.

Cuando se declaran varios punteros en una sola declaración, el operador de indirección debe escribirse solo una vez con el tipo subyacente y no debe repetirse para cada nombre de puntero. El operador de indirección es distributivo en C #, a diferencia de C y C ++. Cuando el operador de indirección se aplica a un puntero nulo, da como resultado un comportamiento definido por la implementación. Dado que este operador se usa en un contexto inseguro, la palabra clave inseguro debe usarse antes junto con la opción / inseguro durante la compilación. Esta definición se escribió en el contexto de C #