1 minute read
4.2.6. Apuntadores
4.2.6. Apuntadores
Un aspecto muy importante del lenguaje C es que permite acceder directamente a direcciones de memoria. Esto se consigue utilizando un tipo de variable que se conoce como apuntador a memoria. Un apuntador es una variable que contiene una dirección de memoria.
Advertisement
Un apuntador se define indicando el tipo de dato al cual apunta y añadiendo el símbolo * ante el nombre del apuntador.
Cabe tener presente que al definir un apuntador solo se reserva espacio para almacenar una dirección de memoria; no se reserva espacio para poder almacenar un valor de un tipo determinado.
El formato general para definir un apuntador en C es el siguiente:
tipo *nombre_apuntador;
Utilizamos el operador & para obtener la dirección de memoria donde se encuentra almacenada una variable, no su contenido. Esta dirección la podemos asignar a un apuntador.
Ejemplo int *p1; // Se define un apuntador de tipo int char *p2; // Se define un apuntador de tipo char
int x=1, y; // se definen dos variables de tipo int char c='a'; // se define una variables de tipo char
p1=&x; // se asigna a p1 la dirección de la variable x p2=&c; // se asigna a p2 la dirección de la variable c y=*p1; // como p1 apunta a x, es equivalente a y = x.
Cuando trabajamos con vectores, el nombre del vector en realidad es un apuntador, una constante que contiene la dirección del primer elemento del vector.
Símbolo * en C
El símbolo * tiene múltiples funciones: definir un apuntador, acceder al contenido de una posición de memoria y también se corresponde con el operador aritmético de multiplicación.
int vector[3]={1, 2, 3}; //lo que es equivalente a hacer lo siguiente: int vector[3]; int *v; int i; v = vector; //vector i *v son apuntadores a entero. for (i=0; i<3; i++) *(v+i)=i+1; // *(v+i): indica que estamos accediendo al contenido // de la dirección 'v+i'