[C con Clase] Arreglo multidimensional

Salvador Pozo salvapozo en gmail.com
Vie Abr 24 15:50:59 CEST 2009


Hola, otra vez:

>> ...
>> La sentencia:
>> szBidiArray[1][0] = 'S';
>
>> Producirá un error, puesto que hemos inicializado el array con cadenas
>> literales, y estas, por definición son constantes.
>
> No entiendo esto de que por definición son constantes. Disculpa que
> sea tan bruto, pero es que soy profesor además de programador y necesito
> interiorizar esto bien para poder transmitirlo en los estudiantes, las

Recordemos que tenemos un array de punteros a cadenas declarada como:

char *szBidiArray[] = {"string 1", "string2"};

Los punteros a char que se inician en el código fuente mediante
cadenas literales (cadenas entre comillas), y en general, cualquier
cadena que aparezca en el fuente, es constante, o al menos, se
considera constante por el compilador.

Esto es cierto siempre en C++, aunque no estoy seguro en C.

Por ejemplo, en:
cout << "Hola, mundo" << endl;

La cadena "Hola, mundo" es constante. En este caso resulta evidente,
puesto que no hay ninguna manera de modificar esta
cadena.

Otro ejemplo:

char *cadena="Hola, grupo";

En este caso, también es una cadena literal, y por lo tanto, constante.

Se trata de las especificaciones de C++, y que el compilador de error
o no depende de la implementación del programa compilador.

> dudas de los detalles son las que hacen que estos sean interesantes, o
> por lo menos para mí lo son.

Por supuesto, estoy de acuerdo, y por eso me gusta responder a
preguntas sobre este tipo de cuestiones.

>> szbidi.cpp 4 error: assignment of read-only location|
>
> Sí, esto lo vi en mi compilador, pero no entiendo la lógica como dije
> anteriormente.

Evidentemente, en este caso (en el mío GCC), el compilador sigue al
pie de la letra las especificaciones.

> Hasta pronto y disculpa la lata. :)

Ho hay problema, lo importante es que todo quede claro.

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