ho creato un semplice programma:Dichiarazione delle variabili ed i loro indirizzi di memoria in C
#include <stdio.h>
int main()
{
int s1;
int s2;
int s3;
int *p1, *p2, *p3;
p1 = &s1;
p2 = &s2;
p3 = &s3;
printf("%d\n%d\n%d", p1, p2, p3);
}
Ogni volta che esegue questo programma, esso stampa gli indirizzi di memoria di puntatori p1
, p2
e p3
e la cosa interessante è che questi valori avere differenze di 12
. Voglio sapere la ragione di questo. Perché gli indirizzi differiscono da 12
?
Nota: questo succede ogni volta Eseguo il programma.
uscita:
ho provato lo stesso programma in molti tipi di variabili, i risultati che ottiene sono ..
Quando le variabili sono di tipo char.
Quando le variabili sono tipo lungo
Quando dichiaro int matrice, dimensioni ogni matrice è 1.
Quando dimensione della seconda matrice dichiarata è 2, ottiene un offset extra di 4 byte.
Perché non utilizzare l'identificatore di formato progettato per i puntatori di stampa o, meglio ancora, 'std :: cout'? E perché non usare una firma valida per 'main'? – chris
Uno sguardo al codice generato (in un debugger o un disassemblatore) probabilmente ti aiuterà a illuminarti. – cHao
Che cosa sono il compilatore e la piattaforma? – Steve