[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