Bienvenidos sean a este post, hoy veremos una introduccion sobre un tema interesante y que nos permite adelantar un tema proximo a ver.
Como lo inidica el titulo un concepto interesante que podemos manejar es tener un array de apuntadores a otros arrays, que de una forma muy resumida y breve podemos considerarlo como un array de dos dimensiones, pero una cosa que debemos tener en cuenta es que este tipo de array es diferente a los arrays que estuvimos viendo hasta ahora, y si bien para poder acceder sera muy similar al de dos dimnesiones deberemos tener algunas precauciones, primero repasemos como definir un array de dos dimensiones:
int arrayDoble[3][5];
Si debemos hacer una equivalencia de este array recuerden que seria como la siguiente:
| dim1/dim2 | 0 | 1 | 2 | 3 | 4 |
| 0 | dato | dato | dato | dato | dato |
| 1 | dato | dato | dato | dato | dato |
| 2 | dato | dato | dato | dato | dato |
Recuerden que las filas corresponden a la dimension 1 y las columnas a la dimension 2, donde cada celda tendra un dato y podremos recuperarlo, para convertir esto en un array de apuntadores deberemos hacer lo siguiente, primero declaramos el apunntador de array:
int* apArray[3] = {NULL};
Nuestro siguiente paso sera definir tres arrays:
int array1[5];
int array2[5];
int array3[5];
Y nuestro ultimo paso sera asignar los arrays a cada posicion del apuntador:
apArray[0] = array1;
apArray[1] = array2;
apArray[2] = array3;
Como pueden ver es un poco mas complicado y a simple vista parece hasta menos practico porque en lugar de un solo array debemos declarar cuatro, pero para entenderlo mejor vamos a crear un ejemplo practico, para ello generen un nuevo archivo que llamaremos ejemplo18.c y le agregaremos el siguiente codigo:
ejemplo18.c
#include <stdio.h>
int main()
{
int arreglo[3][5] = { 11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25 };
for(int i=0; i < 3; i++)
{
for(int j=0; j < 5; j++)
{
printf("%i ", arreglo[i][j]);
}
printf("\n");
}
return 0;
}
Este es un codigo simple donde primero definiremos un array bidimensional, con multiples datos, despues por medio de dos bucles for iremos recuperando cada uno de los datos de cada posicion, observen que hasta no finalice el interno no sigue el primero y para recuperarlo usamos las dos variables de los bucles, un pequeño detalle es el cambio de linea que usaremos para bajar de linea una vez que terminemos de mostrar esos valores, con todo esto comentado compilemos y veamos como es su salida:
tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo18
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
tinchicus@dbn001vrt:~/lenguajes/C$
Ahora vamos a tomar este codigo y lo modificaremos de la siguiente manera:
#include <stdio.h>
int main()
{
int* a_arreglo[3] = {NULL};
int arreglo1[] = {11, 12, 13, 14, 15};
int arreglo2[] = {16, 17, 18, 19, 20};
int arreglo3[] = {21, 22, 23, 24, 25};
a_arreglo[0] = arreglo1;
a_arreglo[1] = arreglo2;
a_arreglo[2] = arreglo3;
for(int i=0; i < 3; i++)
{
for(int j=0; j < 5; j++)
{
printf("%i ", a_arreglo[i][j]);
}
printf("\n");
}
return 0;
}
Aqui basicamente lo que hicimos fue reemplazar el array bidimensional por el array de apuntadores, volvemos a definir un apuntador de array, luego definimos tres arrays con cinco valores, y despues asignnaremos cada uno de estos arrays a cada posicionn del apuntador, observen que los bucles for son exactamente los mismos, si compilamos, ejecutemos y veamos como sera su salida:
tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo18
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
tinchicus@dbn001vrt:~/lenguajes/C$
Como pueden ver obtuvimos la misma salida, pero si lo comparamos puede ser hasta un poco mas practico la carga de informacion, pero la verdadera ventaja esta al momento de definir el array, en este caso la primera version sera una version estatica donde solamente podremos tener esa cantidad de filas y columnas, las usemos todas o no, por otro lado en el segundo podemos definir otras cantidades dado que nuestros arrays tendran el tamaño que les asignemos lo cual afectara a las filas y columnas, igualmente sobre este tema ahondaremos un poco mas adelante pero por el momento es bueno saber que podemos trabajar tambien de esta forma, y repito proximamente ahondaremos mas sobre este tema.
En resumen, hoy hemos visto array de apuntadores a array, que es, a que se asemeja, como podemos crearlo, despues por medio de un ejemplo simple vimos como transformarlo y seguira trabajando de la misma manera, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
