[C con Clase] Arreglo multidimensional

Salvador Pozo salvapozo en gmail.com
Mie Abr 22 18:00:56 CEST 2009


>> Debes usar llaves. Esto es,
>
>> char szBidiArray[][8] = { "String1",
>>                            "String2" };
>
> Entonces esto quiere decir que el tamaño de la segunda dimensión no
> puede variar, es decir, que si a continuación en otra parte del código
> del programa, se hace: szBidiArray[0] = "Long String1"; pues entonces
> levantaría una excepción e incluso pienso que también cambiarle el
> valor por otra cadena de igual longitud?

Hola:

Supongo que esto estará claro, pero debo decir que el tamaño de los
arrays en C++ se define durante la fase de compilación, por lo tanto,
todas las dimensiones son constantes.

En el ejemplo de Steven, la segunda dimensión es explícita, y su valor
8. La primera la calcula el compilador, contando el número de cadenas
inicializadoras, y es 2.

Por otra parte, como dije en el correo anterior, las posiciones de
memoria son consecutivas, de modo que si al primer elemento se asignas
una cadena de más de 8 caracteres, (7 más el nulo terminador), se
sobrescribirán posiciones de memoria pertenecientes al segundo
elemento. Si la cadena tiene más de 16 caracteres, empezaremos a
sobrescribir memoria perteneciente a otras variables o al código, y
puede (o no) producirse una excepción.

Hasta pronto.
-- 
Salvador Pozo Coronado
http://www.conclase.net
mailto:salvapozo en gmail.com




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