<div dir="ltr">me di cuenta después que envié el mail me sentí tan tonto...  :-P<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">El 2 de abril de 2016, 17:52, Davidson, Steven <span dir="ltr"><<a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola Yolmer,<div class="gmail_extra"><br></div><div class="gmail_extra">Me temo que tu conclusión es errónea. Al hacer cualquier asignación, copias valores. En tu caso, copias el valor, guardado en 'cadena_2', a la memoria denominada, 'cadena_1'. Para hacer la comprobación correctamente, debes mostrar los valores guardados en los punteros. Esto es,</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">cout << "cadena_1 : \"" << cadena_1 << '"' << endl;</div><div class="gmail_extra">cout << "cadena_1 : [" << (void *)cadena_1 << ']' << endl;</div><div class="gmail_extra"><div class="gmail_extra">cout << "cadena_2 : \"" << cadena_2 << '"' << endl;</div><div class="gmail_extra">cout << "cadena_2 : [" << (void *)cadena_2 << ']' << endl << endl;</div><div><br></div><div>delete[] cadena_1;</div></div><div class="gmail_extra">cadena_1 = cadena_2;  // Copiamos el valor en 'cadena_2' a 'cadena_1' => copiamos dirección de memoria<br></div><div><br></div></div><div class="gmail_extra"><div class="gmail_extra">cout << "cadena_1 = cadena_2" << endl << endl << endl;</div><div class="gmail_extra"><div class="gmail_extra">cout << "cadena_1 : \"" << cadena_1 << '"' << endl;</div><div class="gmail_extra">cout << "cadena_1 : [" << (void *)cadena_1 << ']' << endl;</div><div class="gmail_extra">cout << "cadena_2 : \"" << cadena_2 << '"' << endl;</div><div class="gmail_extra">cout << "cadena_2 : [" << (void *)cadena_2 << ']' << endl << endl;</div><div><br></div></div><div class="gmail_extra">strcpy( cadena_2, "cambiada" );</div><div class="gmail_extra"><span style="white-space:pre-wrap">cout << "cadena_1 : \"" << cadena_1 << '"' << endl;
cout << "cadena_1 : [" << (void *)cadena_1 << ']' << endl;
cout << "cadena_2 : \"" << cadena_2 << '"' << endl;
cout << "cadena_2 : [" << (void *)cadena_2 << ']' << endl << endl;
<br></span></div><div class="gmail_extra"><br></div><div class="gmail_extra">Verás claramente que 'cadena_1' apunta a la misma memoria que apunta 'cadena_2'. Por lo tanto, cualquier cambio en esa memoria se verá reflejada usando cualquiera de estos dos punteros.<br></div><div><br></div><div><br></div><div>Espero que esto aclare la duda.</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Steven</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-02 16:57 GMT-04:00 Yolmer Rosales <span dir="ltr"><<a href="mailto:yolmer.rosales@gmail.com" target="_blank">yolmer.rosales@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><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 style="white-space:pre-wrap">  </span>char sz = 80;</div><div><br></div><div><span style="white-space:pre-wrap">   </span>cadena_1 = new char[sz];</div><div><span style="white-space:pre-wrap"> </span>cadena_2 = new char[sz];</div><div><br></div><div><span style="white-space:pre-wrap">        </span>strcpy(cadena_1,"Hola");</div><div><span style="white-space:pre-wrap">       </span>strcpy(cadena_2,"Adios");</div><div><br></div><div><br></div><div><span style="white-space:pre-wrap">    </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span style="white-space:pre-wrap"> </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span style="white-space:pre-wrap">  </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span style="white-space:pre-wrap"> </span>cout << "&cadena_2: " << &cadena_2 << "\n\n";</div><div><br></div><div><span style="white-space:pre-wrap">     </span>//strcpy(cadena_1,cadena_2);</div><div><span style="white-space:pre-wrap">     </span>cadena_1 = cadena_2;</div><div><br></div><div><span style="white-space:pre-wrap">    </span>cout << "cadena_1 = cadena_2\n\n"  << endl;</div><div><span style="white-space:pre-wrap">       </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span style="white-space:pre-wrap"> </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span style="white-space:pre-wrap">  </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span style="white-space:pre-wrap"> </span>cout << "&cadena_2: " << &cadena_2 << "\n\n";</div><div><br></div><div><span style="white-space:pre-wrap">     </span>strcpy(cadena_2,"cambiada");</div><div><span style="white-space:pre-wrap">   </span>cout << "cadena_1 : " << cadena_1  << endl;</div><div><span style="white-space:pre-wrap"> </span>cout << "&cadena_1: " << &cadena_1 << endl;</div><div><span style="white-space:pre-wrap">  </span>cout << "cadena_2 : " << cadena_2  << endl;</div><div><span style="white-space:pre-wrap"> </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>
</blockquote></div><br></div></div>
<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" rel="noreferrer" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" rel="noreferrer" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>