<div dir="ltr">hola hoy no quiero hacer preguntas.<div><br><div>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:</div></div><div><br></div><div><div>char *cadena_1, *cadena_2;</div><div><span class="" style="white-space:pre">      </span>char sz = 80;</div><div><br></div><div><span class="" style="white-space:pre">     </span>cadena_1 = new char[sz];</div><div><span class="" style="white-space:pre">   </span>cadena_2 = new char[sz];</div><div><br></div><div><span class="" style="white-space:pre">  </span>strcpy(cadena_1,"Hola");</div><div><span class="" style="white-space:pre"> </span>strcpy(cadena_2,"Adios");</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">      </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span class="" style="white-space:pre">    </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_2: " << &cadena_2 << "\n\n";</div><div><br></div><div><span class="" style="white-space:pre">       </span>//strcpy(cadena_1,cadena_2);</div><div><span class="" style="white-space:pre">       </span>cadena_1 = cadena_2;</div><div><br></div><div><span class="" style="white-space:pre">      </span>cout << "cadena_1 = cadena_2\n\n"  << endl;</div><div><span class="" style="white-space:pre"> </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span class="" style="white-space:pre">    </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_2: " << &cadena_2 << "\n\n";</div><div><br></div><div><span class="" style="white-space:pre">       </span>strcpy(cadena_2,"cambiada");</div><div><span class="" style="white-space:pre">     </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span class="" style="white-space:pre">    </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span class="" style="white-space:pre">   </span>cout << "&cadena_2: " << &cadena_2 << endl;</div></div><div><br></div><div><br></div><div>y mi salida es la siguiente:</div><div><br></div><div><div>cadena_1 : Hola</div><div>&cadena_1: 0x22ff08</div><div>cadena_2 : Adios</div><div>&cadena_2: 0x22ff04</div><div><br></div><div>cadena_1 = cadena_2</div><div><br></div><div><br></div><div>cadena_1 : Adios</div><div>&cadena_1: 0x22ff08</div><div>cadena_2 : Adios</div><div>&cadena_2: 0x22ff04</div><div><br></div><div>cadena_1 : cambiada</div><div>&cadena_1: 0x22ff08</div><div>cadena_2 : cambiada</div><div>&cadena_2: 0x22ff04</div><div><br></div><div>Process returned 0 (0x0)   execution time : 0.053 s</div><div>Press any key to continue.</div></div><div><br></div><div>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.</div><div><br></div><div>ya sabía que la clase string permite esto pero nunca pensé que el *char también</div><div><br></div></div>