<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><font size="3">Hola a todos, tengo una duda con un texto que sale en el capitulo 12 de C++ con clase el ejemplo al que se refiere el texto es el siguiente:<br></font><br><pre class="ejemplo">int vector[10]; <br>int *puntero;<br> <br>puntero = vector; /* Equivale a puntero = &vector[0]; <br>esto se lee como "dirección del primer de vector" */ <br>*puntero++; /* Equivale a vector[0]++; */ <br><span style="background-color: rgb(255, 0, 0);">puntero++; /* puntero equivale a &vector[1] */ </span><br><span style="font-family: arial,helvetica,sans-serif;"><br></span></pre><span style="font-family: times new roman,new york,times,serif;">El texto dice lo siguiente, en referencia a la última línea de el ejemplo anterior:<br><br></span>"La segunda incrementa el puntero, esto significa que apuntará a la
 posición 
  de memoria del siguiente "int", pero no a la siguiente posición 
  de memoria. El puntero no se incrementará en una unidad, como tal vez 
  sería lógico esperar, sino en la longitud de un "int"."<br><br>Aquí es donde me confundo, al ejecutar la aplicación, me dí cuenta de que "puntero" si cambia a la siguiente posicición de memoria aunque en el texto anterior dice que no, esto me lo pueden explicar, porque yo no lo veo, verán el resultado que a mi me da al incrementar puntero es el siguiente:<br><br><span style="color: rgb(0, 0, 255);">El valor es: 9</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">Memoria  es: 0x0012FF58</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">El valor es: 8</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">Memoria  es: 0x0012FF5C</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">El valor es: 7</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">Memoria  es: 0x0012FF60</span><br style="color: rgb(0, 0, 255);"><span
 style="color: rgb(0, 0, 255);">El valor es: 6</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">Memoria  es: 0x0012FF64</span><br style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 255);">El valor es: 5</span><br><br><span style="color: rgb(0, 0, 0);">Como se puede apreciar el incremento de la dirección de la variable "puntero" es de 4bytes, el siguiente "int" al que se refiere en el texto anterior, pero también, cada vez que ejecuto la siguiente línea "puntero++", me pasa a la siguiente posición de memoria del vector.</span><br><br><br>El otro problema que me surge es que si quiero hacer referencia al primer elemento del vector desde el puntero una vez incrementado x veces, no puedo colocar la siguiente línea "puntero[0]", sino que tengo que colocar el valor en negativo segun las x veces que haya ejecutado "puntero++", ejemplo:<br><br>Si he incrementado "puntero" 3 veces entonces para visualizar el primer valor del
 puntero  tengo que  escribir lo siguiente: <br>cout << puntero[-3] << endl;<br><br>Les coloco el código completo para que lo vean:<br><br>#include <iostream.h><br>int main (){<br>    int *p;<br>    int aArr[10] = {9,8,7,6,5,4,3,2,1,0};<br>    p = aArr;<br>    cout << "Memoria  es: " << p << endl;<br>    cout << "El valor es: " << *p << endl;<br>    *p++;<br>    cout << "Memoria  es: " << p << endl;<br>    cout << "El valor es: " << *p << endl;<br>    p++;<br>    cout << "Memoria  es: " << p << endl;<br>    cout << "El valor es: " << *p << endl;<br>    p++;<br>    cout << "Memoria  es: " << p <<
 endl;<br>    cout << "El valor es: " << *p << endl;<br>    p++;<br>    cout << "Memoria  es: " << p << endl;<br>    cout << "El valor es: " << *p << endl;<br><br>    cout << "Memoria  es: " << p[-4] << endl;<br>    cin.get();<br>    return 0;<br>}<br><br>Alguien puede explicarme porque sucede esto, si el puntero no cambia de posición de memoria, no debería mostrar otro valor cuando se coloca *puntero[0];<br><br>Muchas gracias. </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>