[C con Clase] Dudas de arrays

Javier Cancio del Busto sepholin en gmail.com
Lun Jun 14 11:34:58 CEST 2010


Hola Steven,

Me ha quedado todo clarísimo! Muchas gracias por tu ayuda :)

Un saludo,

El 14 de junio de 2010 05:16, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Javier,
>
>
> Javier Cancio del Busto wrote:
>
>> Hola,
>>
>> Siguiendo el tutorial de la web, he visto dos ejemplos que no me
>> quedan muy claros... dicen:
>>
>> ¿Cuantos elementos contiene cada uno de los siguientes arrays?
>>
>> 1) int y[][3] = {3,6,7,2,3,1,2,4};
>>
>> 2)char z[][2][10] = {"hola", "adios", "", "saludo", "chao"};
>>
>>
>> No entiendo cómo se calculan los elementos en estos dos casos... :S
>>
>>
> El compilador puede inducir la cantidad de elementos porque existe una
> inicialización con los valores entre las llaves en la definición de los
> arrays.
>
> 1) 'y' es un array de X elementos, los cuales son 3 arrays de tipo 'int'.
> Mirando los elementos y conociendo los tipos de cada uno, podemos determinar
> el valor de X - la cantidad de arrays.
>
> Como cada elemento trata de 3 arrays de enteros, entonces cada grupo de 3
> enteros es un elemento. Es decir,
>
> y[0] := {3,6,7}
> y[1] := {2,3,1}
> y[2] := {2,4,0}
>
> Por lo tanto, 'y' es un array de 3 elementos, los cuales son 3 arrays de
> tipo 'int'. Conceptualmente, tenemos una tabla o matriz de 3x3 de enteros.
> Podríamos reescribir la definición de este array como:
>
> int y[3][3] = {3,6,7,2,3,1,2,4};
>
> Por último, recuerda que si no hay suficientes elementos en la
> inicialización para la cantidad de elementos en la variable, entonces se
> rellenan los demás con 0 (cero) del tipo adecuado. Por esta razón, 'y[2]'
> contendrá el array de los tres elementos: 2, 4, y 0.
>
> 2) 'z' es un array de N elementos, los cuales son 2 arrays, cuyos elementos
> son 10 arrays de tipo 'int'. Aplicamos el mismo razonamiento que en 1). Ten
> presente que una cadena literal de caracteres se representa como un array de
> tipo 'char' con un carácter nulo al final. Por lo tanto, cada cadena literal
> es otro array.
>
> Al final, obtenemos una matriz tridimensional de Nx2x10 de caracteres. Esto
> es:
>
> z[0] := { "hola\0\0\0\0\0\0", "adios\0\0\0\0\0\0" }
> z[1] := { "\0\0\0\0\0\0\0\0\0\0", "saludo\0\0\0\0" }
> z[2] := { "ciao\0\0\0\0\0\0\0", "\0\0\0\0\0\0\0\0\0\0" }
>
> Nuevamente, tenemos 3 elementos para la primera "dimensión".
>
> Fíjate que las cadenas deben caber en el array de 10 'char'. Como se trata
> de una inicialización, se rellenan con ceros (de tipo 'char') los demás
> elementos para completar el array.
>
>
> Espero haber aclarado la duda.
>
> Steven
>
>
> _______________________________________________
> 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
>



-- 
======================
 Javier Cancio del Busto
======================
     http://sepho.es/
======================
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100614/bb5a1e01/attachment.html>


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