format cout de pointeur
Je veux les convertir en code c, c++ code . Il est sur le pointeur printf
int n = 44;
//printf("n = %d \t &n = %x\n", n, &n);
cout<<"n ="<<n<< "\t" <<"&n ="<<hex<<int(&n)<<endl;
Quand je lance le printf de sortie est comme ça:
n=44 &n=22ff1c
Mais quand je lance le cout de sortie est comme ça:
n=44 &n=22ff0c
Pourquoi les deux versions de la sortie des valeurs différentes pour l'adresse de n?
Le nombre hexadécimal est l'adresse mémoire de la variable. Il peut avoir des valeurs différentes à chaque fois que vous exécutez le programme.
Chaque fois que je lance le printf, il me donne la même réponse ( &n=22ff1c). De la même manière cout du programme donne le même résultat ( &n=22ff0c)
Re votre edit: 2C est hex pour 44.
comment puis-je convertir 2c 44 ?
Je veux imprimer n=44 *pn=44
Chaque fois que je lance le printf, il me donne la même réponse ( &n=22ff1c). De la même manière cout du programme donne le même résultat ( &n=22ff0c)
Re votre edit: 2C est hex pour 44.
comment puis-je convertir 2c 44 ?
Je veux imprimer n=44 *pn=44
OriginalL'auteur cadyT | 2012-04-01
Vous devez vous connecter pour publier un commentaire.
Le compilateur arrive à mettre la pile allouée variable à un endroit différent dans les différentes versions du programme.
Essayer y compris les printf et cout versions d'un même programme afin qu'ils travaillent avec exactement le même pointeur. Ensuite, vous verrez que les deux versions comportent de la même façon.
M. Lister correctement les points, vous devez utiliser le %p chaîne de format lors de l'impression des pointeurs dans le printf.
%x
? Les gars, vous me décevez.Lister juste point de, a été de se concentrer sur le principal point de la question.
OriginalL'auteur David Heffernan
Vous n'avez pas de contrôle où
n
est en mémoire. Le compilateur peut changer la façon dont les choses sont positionnés selon d'autres choses qui semblent sans rapport. Il n'a pas d'importance. Vous n'êtes pas en droit de dire oùn
devrait aller; quelque chose d'autre pourrait déjà être là où vous voulez le placer.OriginalL'auteur Karl Knechtel
En supposant que vous ne voulez pas dire l'espace compris entre les différences. L'adresse où
n
est alloué sur la pile est différent à chaque exécution du programme. Sinon, tout a l'air OK pour moi!OriginalL'auteur Jeff Foster