considère que ce programme C++:conflit en C++ entre l'adresse du pointeur et l'adresse mémorisée dans le pointeur
#include<iostream>
using namespace std;
int main() {
int x = 7;
int *ip = &x;
cout << "the value of x is " << x <<endl;
cout << "the address of x is " << &x <<endl;
cout << "the address stored at ip is "<< ip <<endl;
return 0;
}
Voici ce que je reçois en sortie:
the value of x is 7
the address of x is 0x28ff08
the address stored at the pointer is 0x28ff08
Cela me paraît logique . Cependant, si je change le code à ce qui suit, je reçois un autre ensemble de sorties:
#include<iostream>
using namespace std;
int main() {
int x = 7;
int *ip = &x;
cout << "the value of x is " << x <<endl;
cout << "the address of x is " << &x <<endl;
cout << "the address of the ip itself is "<< &ip <<endl;
return 0;
}
Maintenant, je reçois cette sortie:
the value of x is 7
the address of x is 0x28ff0c
the address of the ip itself is 0x28ff08
Dans le premier code, l'adresse la variable x
et l'adresse stockée au pointeur ip
sont les mêmes, ce qui est logique pour moi. Mais dans le second programme, l'adresse de ip
reste la même, mais l'adresse de x
semble changer, ce que je trouve confus. Je m'attendais à ce que l'adresse de la variable x
reste la même que dans le premier programme et pour que l'adresse du pointeur change.
Quelqu'un peut-il expliquer ce qui se passe ici?
a) Pourquoi vous attendez-vous à cela et b) pourquoi voulez-vous commencer? –
Je ne comprends vraiment pas de quoi il s'agit. Pouvez-vous inclure la sortie dans la question au lieu de simplement des captures d'écran et peut-être mettre en évidence les adresses que vous attendez à être identiques/differrent? – user463035818
est-ce que vous vous attendez à ce que l'adresse de 'x' dans le deuxième extrait soit la même que l'adresse de' x' dans le premier extrait? Si oui, pourquoi? Vous ne pouvez même pas compter sur 'x' stocké dans la même mémoire lorsque vous exécutez le même code deux fois – user463035818