[C con Clase] Asignación de cadenas *char
Yolmer Rosales
yolmer.rosales en gmail.com
Sab Abr 2 22:57:16 CEST 2016
hola hoy no quiero hacer preguntas.
Sólo quiero compartir el resultado de un pequeño experimento que no resultó
como esperaba. Según lo que he leído en todos lados asignar una cadena a
otra con el operador '=' sólo copia la dirección de memoria lo intenté
verificar con el siguiente código:
char *cadena_1, *cadena_2;
char sz = 80;
cadena_1 = new char[sz];
cadena_2 = new char[sz];
strcpy(cadena_1,"Hola");
strcpy(cadena_2,"Adios");
cout << "cadena_1 : " << cadena_1 << endl;
cout << "&cadena_1: " << &cadena_1 << endl;
cout << "cadena_2 : " << cadena_2 << endl;
cout << "&cadena_2: " << &cadena_2 << "\n\n";
//strcpy(cadena_1,cadena_2);
cadena_1 = cadena_2;
cout << "cadena_1 = cadena_2\n\n" << endl;
cout << "cadena_1 : " << cadena_1 << endl;
cout << "&cadena_1: " << &cadena_1 << endl;
cout << "cadena_2 : " << cadena_2 << endl;
cout << "&cadena_2: " << &cadena_2 << "\n\n";
strcpy(cadena_2,"cambiada");
cout << "cadena_1 : " << cadena_1 << endl;
cout << "&cadena_1: " << &cadena_1 << endl;
cout << "cadena_2 : " << cadena_2 << endl;
cout << "&cadena_2: " << &cadena_2 << endl;
y mi salida es la siguiente:
cadena_1 : Hola
&cadena_1: 0x22ff08
cadena_2 : Adios
&cadena_2: 0x22ff04
cadena_1 = cadena_2
cadena_1 : Adios
&cadena_1: 0x22ff08
cadena_2 : Adios
&cadena_2: 0x22ff04
cadena_1 : cambiada
&cadena_1: 0x22ff08
cadena_2 : cambiada
&cadena_2: 0x22ff04
Process returned 0 (0x0) execution time : 0.053 s
Press any key to continue.
se ve claramente que si asigno la cadena y no la dirección de memoria. me
sorprende y a la vez me va a facilitar las cosas.
ya sabía que la clase string permite esto pero nunca pensé que el *char
también
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160402/9edaffe0/attachment.html>
Más información sobre la lista de distribución Cconclase