Bienvenidos sean a este post, hoy repasaremos un poco sobre los arrays.
En este post hablamos superficialmente sobre que son los arrays. En ese momento denominamos que eran una variante de variables que perrmitian almacenar mas de un valor. Pero en realidad, es un conjunto de punteros donde cada valor almacenado apunta a este puntero y nosotros lo recuperamos en base a la posicion que esta relacionada. Repasemos las formas que vimos de declarar y/o definir un array:
int arr[4];
int arr[] = { 1, 2, 3, 4};
Los arrays no son dinamicos y por lo tanto siempre debemos establecer la cantidad de elementos que contendran. En el primer caso, se lo pasamos entre los corchetes. Para el segundo caso, no es necesario porque al pasarle los valores, el compilador lo asignara por nosotros en base a los valores asignados. Veamos otra forma de hacerlo:
int arr[]{1, 2, 3, 4};
En este caso, es una forma alternativa donde no usamos el operador de asignacion. Esto asignara el valor y creara el array pertinente. Ahora vamos a ver como recuperar la informacion de un array y para ello crearemos un pequeño ejemplo:
#include <iostream>
int main()
{
int arr[5];
for(int i=0, j = 1; i < 5; i++, j++)
arr[i] = j;
for(int i=0; i < 5; i++)
std::cout << "arr[" << i << "]: " << arr[i] << std::endl;
return 0;
}
Este es un ejemplo simple donde crearemos un array. Primero lo llenaremos de valores mediante un bucle y desde otro bucle recuperamos esos valores. Esta es la forma tradicional que hemos visto anteriormente y en otros posts anteriores. Tomemos el codigo anterior y realicemos el siguiente cambio:
#include <iostream>
int main()
{
int arr[5];
for(int i=0, j = 1; i < 5; i++, j++)
*(arr + i) = j;
for(int i=0; i < 5; i++)
std::cout << "arr[" << i << "]: " << *(arr + i) << std::endl;
return 0;
}
Solamente cambiamos la forma de manejar las posiciones del array. Anteriormente, mencionamos que los array son un conjunto de punteros donde cada uno almacena la informacion relacionada. Por esta razon al incrementar al array este pasara al siguiente puntero. Volvamos a modificar el codigo anterior de la siguiente manera:
#include <iostream>
int main()
{
int* arr = new int[5];
for(int i=0, j = 1; i < 5; i++, j++)
i[arr] = j;
for(int i=0; i < 5; i++)
std::cout << "arr[" << i << "]: " << i[arr] << std::endl;
return 0;
}
Primero, tenemos otra forma de crear un array. En este caso, tenemos un puntero y mediante new le estableceremos cinco posiciones a partir de este. La siguiente modificacion es como asignar cada posicion. Para ello usamos la posicion en cuestion seguido del conjunto de corchetes y dentro el puntero o array. Si observan en el ejemplo, pasamos el valor encargado de controlar cada vuelta. Por ejemplo, si tomamos el valor inicial de i, lo que estamos haciendo a lo siguiente:
0[arr]
Y donde va el numero, pasaremos cada posicion a asignar o recuperar. En cualquiera de los casos anteriores, si compilan y ejecutan el codigo deben tener la siguiente salida:
$ ./estr
arr[0]: 1
arr[1]: 2
arr[2]: 3
arr[3]: 4
arr[4]: 5
$
Esto que decidi agregar es simplemente un complemento a lo que mencionamos sobre arrays. Asi como tambien esto nos servira cuando hablemos mas profundamente sobre estructura de datos en stl. Aunque ya hemos visto una pequeña introduccion en posts anteriores.
En resumen, hoy hemos visto otro tipo de sintaxis para los arrays, asi como tambien hemos mencionado como son realmente, asi como los conceptos que se aplican para que podamos utilizarlos. 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.


Donatión
It’s for site maintenance, thanks!
$1.50
