Indirección

De Wikipedia, la enciclopedia libre

La indirección es una técnica de programación. El concepto se basa en hacer referencia indirecta a los datos usando las direcciones de memoria que los contienen o mediante punteros que señalan hacia esos datos o a las direcciones que los contienen.

En la memoria no sólo se almacenan datos de los programas (como letras, caracteres gráficos, números naturales, números enteros, coma flotante, etc.) sino también direcciones de memoria, que al fin y al cabo también son datos.

Para efectos de almacenamiento y manipulación por el microprocesador, todos estos datos no son más que una secuencia de bytes en diferentes celdas. El que una secuencia de bytes determinada se interprete como un número o como una dirección depende del programador.

El mecanismo de indirección se puede encadenar de manera arbitrariamente larga. La dirección que contiene la dirección de un dato, a su vez se puede almacenar de nuevo en memoria. Es posible almacenar las direcciones de tal forma que haya que seguir un encadenamiento de indirecciones para llegar finalmente a acceder al dato.

En el siguiente ejemplo, la "celda" (dirección de memoria 0x00000100) contiene el dato 0x00000200 que a su vez representa la dirección de la nueva "celda" que contiene el dato que corresponde a una dirección que contiene un dato que representa la dirección 0x00000400 que finalmente contiene el dato que nos interesa. Y así podemos definir a voluntad o conveniencia los diferentes niveles de indirección que necesitemos.