<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV>Bueno, creo que ya voy empezando a entender algo. De todas maneras, hay cosas que me gustaría que me explicarais sobre este tema. Supuestamente, si yo tengo "int *p" y hago "cout << p" me muestra la dirección de memoria y "cout << *p" me muestra el contenido de esa dirección de memoria. Suponiendo que esto sea correcto:</DIV>
<DIV> </DIV>
<DIV>¿En estas sentencias transformáis una variable char en un puntero a int y en un puntero genérico respectivamente?</DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New" color=#00009a size=4>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">char cadena[10] = "Hola";</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">char *c;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">int *n;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">void *v;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif"></FONT> </P><FONT color=#00009a size=4>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">c = cadena; // c apunta a cadena</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">n = (int *)cadena; // n también apunta a cadena</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">v = (void *)cadena; // v también</FONT></P>
<P align=left><FONT face=Courier></FONT> </P>
<P align=left><FONT face="times new roman, new york, times, serif" color=#000000><FONT size=3>¿Y en esta otra transformáis un puntero genérico en un puntero a float?</FONT></FONT></P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3></FONT> </P><FONT face="courier, monaco, monospace, sans-serif" color=#00009a size=4>
<P align=left>cout << "float: " << *(float *)v << endl;</P>
<P align=left> </P>
<P align=left> </P>
<P align=left><FONT face="times new roman, new york, times, serif" color=#000000 size=3>En el curso ponéis el siguiente ejemplo:</FONT></P>
<P align=left> </P><FONT face="times new roman, new york, times, serif" size=3><FONT face="Courier New" color=#00009a size=4>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">#include <iostream></FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">using namespace std;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">struct stEstructura {</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">int a, b;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">} estructura, *e;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">int main() {</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">estructura.a = 10;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">estructura.b = 32;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">e = &estructura;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << "variable" << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << e->a << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << e->b << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << "puntero" << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << estructura.a << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << estructura.b << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cin.get();</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">return 0;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">}</FONT></P>
<P align=left> </P>
<P align=left><FONT face="times new roman, new york, times, serif" color=#000000 size=3>En el "cout << e->a;" mostráis el contenido de la variable "estructura.a" si no me equivoco. Sin embargo no utilizáis el operador "*" cuando con variables había que usarlo. Dicho esto, ¿cómo podemos mostrar la dirección de memoria de "estructura.a"?</FONT></P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3></FONT> </P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3>Por último:</FONT></P>
<P align=left><FONT color=#000000 size=3></FONT> </P><FONT face="Courier New" color=#00009a size=4>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">#include <iostream></FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">using namespace std;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">int main() {</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">char cadena1[] = "Cadena 1";</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">char *cadena2 = "Cadena 2";</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena1 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena2 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">//cadena1++; // Ilegal, cadena1 es constante</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cadena2++; // Legal, cadena2 es un puntero</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena1 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena2 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena1[1] << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena2[0] << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena1 + 2 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena2 + 1 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << *(cadena1 + 2) << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << *(cadena2 + 1) << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cin.get();</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">return 0;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">}</FONT></P>
<P align=left><FONT face=Courier></FONT> </P>
<P align=left><FONT face="times new roman, new york, times, serif" color=#000000 size=3>Me podéis explicar qué hacéis en las siguientes sentencias.</FONT></P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3></FONT> </P><FONT face="Courier New" color=#00009a size=4>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena1 + 2 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << cadena2 + 1 << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << *(cadena1 + 2) << endl;</FONT></P>
<P align=left><FONT face="courier, monaco, monospace, sans-serif">cout << *(cadena2 + 1) << endl;</FONT></P>
<P align=left><FONT face=Courier></FONT> </P>
<P align=left><FONT face=Courier></FONT> </P>
<P align=left><FONT face="times new roman, new york, times, serif" color=#000000 size=3>Bueno, un saludo y a ver si soy capaz de entender este capítulo. Más vale que sea importante, porque es dificilísimo.</FONT></P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3></FONT> </P>
<P align=left><FONT face="Times New Roman" color=#000000 size=3>Un saludo, Alejandro.</FONT></P></FONT></FONT></FONT></FONT></FONT></FONT></FONT></DIV></div><br>
                <hr size=1><br><font face="Verdana" size="-2">LLama Gratis a cualquier PC del Mundo.<br>Llamadas a fijos y móviles desde 1 céntimo por minuto.<br><a href="http://us.rd.yahoo.com/mail/es/tagline/messenger/*http://es.voice.yahoo.com/">http://es.voice.yahoo.com</a></font></body></html>