[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