formato cout per puntatore

Voglio convertire questi c codice per il codice c++. Si tratta di circa puntatore printf

int n = 44;
//printf("n   = %d \t &n = %x\n", n, &n);
cout<<"n ="<<n<< "\t" <<"&n ="<<hex<<int(&n)<<endl;

Quando ho eseguito la printf uscita:

   n=44   &n=22ff1c

Ma quando ho eseguito il cout uscita:

   n=44 &n=22ff0c

Perché le due versioni differenti valori per l’indirizzo di n?

Il numero esadecimale è l’indirizzo di memoria della variabile. Esso può avere valori diversi ogni volta che si esegue il programma.
Ogni volta che ho eseguito la printf non mi dà la stessa risposta ( &n=22ff1c). Allo stesso modo cout programma dà lo stesso risultato ( &n=22ff0c)
Ri edit: 2C è hex 44.
come posso convertire 2c 44 ?
Voglio stampa n=44 *pn=44

OriginaleL’autore cadyT | 2012-04-01

3 Replies
  1. 11

    Il compilatore accade per inserire la pila variabile allocata in una posizione diversa nelle diverse versioni del programma.

    Prova a includere sia printf e cout versioni nello stesso programma in modo che funzionino con lo stesso puntatore. Poi si vedrà che le due versioni si comportano allo stesso modo.

    int n = 44;
    printf("n   = %d \t &n = %x\n", n, &n);
    cout<<"n ="<<n<< "\t" <<"&n ="<<hex<<int(&n)<<endl;

    Come il Signor Lister giustamente notare, si dovrebbe utilizzare l’ %p stringa di formato quando la stampa puntatori printf.

    Ma nessun commento su come non si deve printf un puntatore utilizzando %x? Voi ragazzi mi ha deluso.
    Lister fair punto, si era concentrato sul punto principale della questione.

    OriginaleL’autore

  2. 1

    Non di controllo di cui n è in memoria. Il compilatore può cambiare le cose come sono posizionati a seconda della altre cose che sembrano estranei. Non importa. Non avete il diritto di dire dove n dovrebbe andare; qualcos’altro potrebbe già essere dove vuoi metterlo.

    OriginaleL’autore

  3. 0

    Supponendo che non si intende lo spazio differenze. L’indirizzo a cui n è allocata sullo stack è diverso in ogni esecuzione del programma. In caso contrario, sembra tutto OK per me!

    OriginaleL’autore

Lascia un commento