APUNTADORES


Un apuntador es una variable que almacena la dirección o posición en memoria de otra variable apuntando o señalando la posición del primer byte. permite:

  1. Utilizar el contenido de una variable apuntada si le antecede el operador indirección(*)
  2. Enviar/recibir información desde/hacia las funciones adicionales que emplea un programa a través de direcciones (envio por referencia o dirección).
  3. Enviar funciones del usuario como argumentos de otra función adicional que emplea un programa(estableciendo una función variable).
  4. Emplear únicamente los elementos de arreglos que tienen asignado valor, obteniendo un arreglo de apuntadores de menor dimensión.
Un apuntador debe declarar su tipo (mismo que debe coincidir con el de tipo de variable que apuntará, es decir real o entero), seguido del operador * (operador indirección) y por último indicando el nombre que lo identifica (arbitrario y definido por el programador); las variables alfanuméricas son en si mismas apuntadores.

Una vez que se declara un apuntador, su valor (dirección de una variable) se asigna con el operador ordinario &(operador dirección) aplicado a la variable a la que se apunta, según los siguientes esquemas de parámetros en la memoria y declaraciones:
 

dirección(2 byte)
nombre
contenido
12922
y
"12"
12923

char y[3]="12"; /* se declara tipo, nombre y se asigna contenido */

Observe que en el caso de un arreglo alfanumérico el nombre de la variable sin índices es por definición un apuntador y no requiere el operador (*). Cuando un arreglo alfanumérico se menciona sin índice, se menciona un apuntador que hace referencia a la dirección del primer byte (y=12922). Recuerde que al final del arreglo debe agregarse un elento más para el caracter nulo que indica fin del arreglo ('\0').

Para una variable entera:


 
dirección (2 bytes)
nombre
contenido
12535
a
25
12536

int a=25; /* se declara y da valor para una variable entera */

int *aa; /* se declara tipo y nombre de un apuntador */

... aa&a; /* se asigna la dirección: aa=1235; al apuntador */

En este caso la dirección de la variable a la que apunta se obtiene por medio del operador dirección (&). En este caso se hace referencia por medio del primer byte. Por consiguiente se tiene que el valor de la variable se puede accesar con *aa o can la variable a.

Para una variable real:


 
dirección (4 bytes)
nombre
contenido
3527
b
47.35
3528
3529
3539

float b=47.35; /* se declara y da valor para una variable real */

float *ab; /* se declara el tipo y nombre de un apuntador real */

... ab=&ab; /* se asigna la dirección: ab=3527; al apuntador */

En este caso la dirección de la variable a la que apunta se obtiene por medio del operador indirección (&). Nuevamente observe que siempre se hace referencia por medio del primer byte. El valor de la variable se puede accesar con *ab o con la variable b.

NOTA: las direcciones de las variables son siempre números positivos y por lo tanto su valor en todos los casos será un entero sin signo.


Selecciona un tema