[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