Supposons que
Premier cas
int a;
int *p= &a ; it works no error
Deuxième cas
long int a;
long int b;
b = & a; it wont work
La plupart d'entre nous disent que b est une variable et non un pointeur. Mais voyez ce qui suit.
La question est donc de savoir si le &a
retourne l'adresse qui est un entier non signé alors pourquoi ne pouvons-nous pas l'assigner à une variable normale ? Mais pourquoi seulement aux pointeurs ? Voir ci-dessous
b = (unsigned int) &a ; it works after typecasting though its not practicable.
Si l'adresse est au format entier, pourquoi les entiers non signés ou longs ne la sauvegardent-ils pas ? Je me disais qu'il devait y avoir un secret caché derrière tout cela. Quelqu'un pourrait-il le révéler ? Ce que je pense, c'est que les pointeurs doivent faire quelque chose à l'intérieur, mais je me demande ce que ça peut être et pourquoi une variable normale ne peut pas l'être.
Merci pour toutes vos réponses, mais la vraie question est de savoir ce qu'est vraiment la &a
retours ? Valeur entière ou non ? Si c'est un nombre entier, pourquoi une variable ne peut-elle pas le contenir ? long int a =65535 \valid pourquoi pas int a= &b si la valeur de l'adresse b est 65535
Je ne m'inquiète pas de l'utiliser comme pointeur, s'il vous plaît, la question est de simplement sauvegarder la valeur. Pas le déférencement de l'adresse. Les gens disent 32 ou 64 bits, je ne suis pas inquiet à ce sujet. Pourquoi ne peut-il pas sauvegarder l'adresse si l'adresse est un nombre entier ?
Je veux dire pourquoi on ne peut pas assigner la valeur, je ne dis pas qu'il faut assigner les propriétés des pointeurs à la variable mais juste assigner la valeur, c'est tout.
a=65535
b = a \\ works it assigns b - 65535
&a=65535
b = & a \\ doesn't work, if address is a some integer value,why we can't store it in a variable?
Prenons l'exemple de 16 bits. La taille normale d'un pointeur (l'adresse) est de 2 octets et celle d'une variable est de 2 octets. Pourquoi ne pouvons-nous pas stocker l'adresse dans une autre variable si l'adresse est une valeur entière ? C'est ma question. Je trouve beaucoup de réponses comme ++ qui incrémente de 4 au pointeur et la valeur 1 à la variable.
b = & a ; address of a is 4000
++b ; becomes 4001 thats it,thats not a problem