ARREGLOS BIDIMENCIONALES Y UNIDIMENCIONALES

788586423_4177c1b07b_o_1_.gifAcabamos de ver asignaciones de punteros. Ahora veamos la aritmética de punteros.
Una variable del tipo char ocupa 1 byte en la memoria y una variable de tipo int ocupa 4 bytes (verifiquen que tamaño tienen estos tipos de datos en sus compiladores).
Ahora bien, supongamos que creamos una variable de tipo char y ésta se aloja en la dirección 0x400, luego creamos un puntero a esa variable.

1 char c; // se crea en 0x400
2 char* pc;
3 pc = &c; // pc ahora apunta a 0x400



Utilizando los operadores de adición y sustracción podemos movernos a partir de la dirección relativa a la que apunta un puntero.

1 pc = pc + 1; /* pc ahora apunta a una direccion distinta, 
2 ya que se ha desplazado 1 byte en sentido positivo (1 direccion de memoria más alta), 
3 es decir que pc paso de apuntar de 0x400 a 0x401 */



Para volver a la posición anterior solo debemos escribir: pc-- o pc = pc - 1 o pc -= 1, es indistinto. Lo mismo ocurre con el operador +.

Si utilizamos otro tipo de dato, como por ejemplo int que ocupa 4 bytes, nos moveremos 4 unidades hacia delante (+) o hacia detrás (-) dependiendo del operador que utilicemos.

Comparación de punteros



Para la comparación de punteros se utilizan los operadores básicos de comparación que usábamos con variables bases, tales como int. Por lo que para saber por ejemplo si un puntero apunta a la misma dirección a la que apunta otro, utilizaríamos: p1 == p2, para saber si son distintos utilizaríamos el operador !=, para saber si p1 apunta a una dirección de memoria mas baja que p2 colocaríamos p1 < p2, y así con los demás operadores de comparación

 

|

Comentarios

Escribe un comentario

¿Quieres usar tu foto? - Inicia tu sesión o Regístrate gratis »
Comentarios de este artículo en RSS

Comentarios recientes

  • No hay comentarios recientes
Cerrar