Non, en C, vous ne pouvez obtenir un pointeur vers une zone de stockage (ce qui signifie une variable, un élément de tableau ou un autre pointeur, ils appellent ces « l-valeurs »), pas à une expression. Vous ne pouvez pas obtenir un pointeur vers une expression qui n'a pas de zone de stockage définie (comme une addition ou le résultat d'un appel de fonction). Il convient de noter cependant que C++ gâte ces règles avec des références, mais par souci de clarté, je vais le laisser de côté. Les pointeurs ne sont pas magiques: à la fin, ils ne sont que des nombres entiers. Par conséquent, lorsque vous obtenez le pointeur d'un pointeur, c'est comme si vous obteniez le pointeur d'un entier. Il n'a plus de répercussions. Par exemple, si vous obtenez le pointeur a
dans votre code, vous copiez cette adresse dans une autre variable. Rien ne vous empêche de changer la variable dit:
int a;
int* p = &a;
p = NULL;
Et faisant cela, vous a
restent inchangées. Tout ce que vous pouvez changer à propos de a
est sa valeur. Son adresse est immuable. Tout le reste impliquerait que &a = NULL
(ou toute autre valeur de pointeur) fonctionnerait, ce qui n'est pas le cas.
'b = & pointter' est la manière correcte d'obtenir l'adresse du pointeur' a'. –