[C con Clase] Punteros y arrays

Bernardo Alemán Siverio b3rnardo.as en gmail.com
Mie Jul 6 16:43:30 CEST 2011


Hola de nuevo.
Entonces intentaré explicarlo con palabras.

Tomemos como ejemplo el siguiente *array*:

int array[2][2][2] = {1,2, 3,4,  5,6, 7,8};

Este *array* tiene ocho elementos porque 2*2*2 es igual a 8, del mismo modo
que una tabla de dos filas y dos columnas tiene 4 elementos (2*2 = 4).
Ahora bien, como he dicho, los elementos están ordenados en forma de árbol
(al menos así los imagino yo), así que este "árbol" tiene tres niveles
porque el *array* tiene tres dimensiones.

Podríamos pensar que cada "caja" de la declaración del array nos indica
cuantas ramas o subdivisiones tiene ese nivel. Miremos el ejemplo, hemos
indicado que el primer nivel se divide en 2, por tanto cada subdivisión
tendrá 4 elementos, (1, 2, 3, 4) la primera subdivisión y (5, 6, 7, 8) la
segunda. Hemos indicado que el segundo nivel también se divide en 2, así que
cada subdivisión anterior de cuatro elementos se vuelve a dividir en 2, la
primera se divide en (1, 2) y (3, 4), y la segunda en (5, 6) y (7, 8). Por
último, hemos indicado que el último nivel se vuelve a dividir en dos, esto
significa que en el ultimo nivel podemos acceder al elemento primero o
segundo de cada rama final.

Viendo *array[0][?][?]* sabemos que hemos accedido al primer grupo del
primer nivel (1, 2, 3, 4).
Ahora con *array[0][1][?]* sabemos que accedemos al segundo grupo dentro del
grupo anterior (3, 4).
Por último con *array[0][1][0]* accedemos al 3, y con
*array[0][1][1]*accedemos al 4.

Espero que se entienda, si no es así, ¡por favor!, no dudes en decírmelo e
intentaré explicarlo de otra forma.
Un saludo.



El 6 de julio de 2011 12:53, Antonio Cascales
<antonio.cascales en gmail.com>escribió:

> **
> Hola Bernardo:
>
>    Muchas gracias por ejemplo de los arrays dobles, me ha quedado bastante
> claro asociando los arrays a tablas, y el indice [0] como fila y el indice
> [1] como columna.
>
>    Gracias también por tomarte la molestia de subir la imágen, aunque
> lamento decirte que me es imposible ver la imágen, pues aunque pueda parecer
> poco creíble, soy invidente.
>
>    Gracias de todos modos. Un saludo,
>
>           Antonio
>
>
> ----- Original Message -----
> *From:* Bernardo Alemán Siverio <b3rnardo.as en gmail.com>
> *To:* Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
> *Sent:* Wednesday, July 06, 2011 11:57 AM
> *Subject:* Re: [C con Clase] Punteros y arrays
>
> Te explicaré como "se forman" los *arrays* de dos y de más dimensiones.
> Los punteros son lo que estoy estudiando ahora así que no creo que sea el
> más indicado para hablar de ellos :).
> Los *arrays* de dos dimensiones funcionan como una tabla, mira este
> ejemplo.
>
>  *int array[3][3] = {1,2,3, 4,5,6, 7,8,9};*
>
> La linea anterior define la siguiente tabla:
>
> 1 2 3
> 4 5 6
> 7 8 9
>
> El elemento (1,1) sería el 1 (fila 1, columna 1), pero como en C/C++ los
> índices empiezan en 0, accederíamos a él con *array[0][0]*.
> El elemento (2,1) sería el 5 (fila 2, columna 1), pero como en C/C++ los
> índices empiezan en 0, accederíamos a él con *array[1][0]*.
> El elemento (3,3) sería el 9 (fila 3, columna 3), pero como en C/C++ los
> índices empiezan en 0, accederíamos a él con *array[2][2]*.
>
>
> Para entender los *arrays* de más de dos dimensiones puedes pensar en
> ellos como estructuras en árbol (de hecho también puedes imaginar los de dos
> dimensiones como árboles). He subido una imagen para intentar aclararte este
> tema, debajo tienes el enlace. Espero que te sirva.
>
> http://asi-uso.webcindario.com/Array-multidimensional.gif
>
> Un saludo.
>
> El 2 de julio de 2011 14:14, Antonio Cascales <antonio.cascales en gmail.com>escribió:
>
>> **
>> Hola a todos:
>>
>>    Me llamo Antonio, y soy relativamente nuevo por la lista. Llevo tiempo
>> por aquí, con el fín de aprender a programar, pero pese a lo mucho que me
>> gustaría entender todo lo que por aquí comentáis, soy incapaz de avanzar.
>>
>>    ya le he pegado varios repasos al curso de C++ que tenéis por la web,
>> pero debo de ser bastante poco inteligente, porque no logro entender
>> determinados conceptos.
>>
>>    Es por eso que os escribo, para ver si alguien, bien sea con una
>> explicación más clara, o con ejemplos concretos, me pudiese ayudar a
>> entender qué son los punteros y los arrays. Y casi más lo primero que lo
>> segundo, porque al menos, los arrays de 1 vector creo entenderlos. La
>> utilidad y el funcionamiento de más de dos índices, ya se me escapa.
>>
>>    ¿alguno podríais echarme una mano?
>>
>>    Muchas gracias a quien responda,
>>
>>           Antonio
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
> --
> Bernardo Alemán Siverio
>
> ------------------------------
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Bernardo Alemán Siverio
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110706/235afa0a/attachment.html>


Más información sobre la lista de distribución Cconclase