9.6. Punteros y arrays
Curso: Fundamentos de programación en C, por Nacho Cabanes
9.6. Punteros y arrays
En C hay muy poca diferencia “interna” entre un puntero y un array. En muchas ocasiones, podremos declarar un dato como array (una tabla con varios elementos iguales, de tamaño predefinido) y recorrerlo usando punteros. Vamos a ver un ejemplo:
/*---------------------------*/ /* Ejemplo en C nº 76: */ /* C076.C */ /* */ /* Arrays y punteros (1) */ /* */ /* Curso de C, */ /* Nacho Cabanes */ /*---------------------------*/ #include <stdio.h> int main() { int datos[10]; int i; /* Damos valores normalmente */ for (i=0; i<10; i++) datos[i] = i*2; /* Pero los recorremos usando punteros */ for (i=0; i<10; i++) printf ("%d ", *(datos+i)); return 0; }Pero también podremos hacer lo contrario: declarar de forma dinámica una variable usando “malloc” y recorrerla como si fuera un array:
/*---------------------------*/ /* Ejemplo en C nº 77: */ /* C077.C */ /* */ /* Arrays y punteros (2) */ /* */ /* Curso de C, */ /* Nacho Cabanes */ /*---------------------------*/ #include <stdio.h> #include <stdlib.h> int main() { int *datos; int i; /* Reservamos espacio */ datos = (int *) malloc (20*sizeof(int)); /* Damos valores como puntero */ printf("Uso como puntero... "); for (i=0; i<20; i++) *(datos+i) = i*2; /* Y los mostramos */ for (i=0; i<20; i++) printf ("%d ", *(datos+i)); /* Ahora damos valores como array */ printf("\nUso como array... "); for (i=0; i<20; i++) datos[i] = i*3; /* Y los mostramos */ for (i=0; i<20; i++) printf ("%d ", datos[i]); /* Liberamos el espacio */ free(datos); return 0; }
Actualizado el: 27-07-2014 14:15