Convertir int en adresse de point int

c ++

p pointe vers un endroit spécifique

 int * p 

Lorsque j’essaie p=p[1] il ne peut pas convertir int en int (avec devcpp).

Bien que p=&p[1] fonctionne bien

Pourquoi dois-je faire la deuxième méthode? p[1] est une adresse. Donc, la première méthode devrait fonctionner? Pouvez-vous m’expliquer à propos de cette erreur?

p[1] est identique à *(p + 1) .

Vous voulez l’ adresse de cet élément, qui est simplement (p + 1) . C ++ permet également à &p[1] , comme vous l’avez remarqué.

p[1] est équivalent à *(p + 1) donc c’est une valeur, pas une adresse. p = p + 1 ou juste p++ serait ce que vous voulez.

Alors que p est un int* , p[1] est un élément de ce tableau, donc p[1] est int .

Vous pouvez faire p = &p[1] d’autres manières, par exemple p = p + 1 ou p++ . Les deux vont définir p à la même valeur finale.

Notez que lorsque vous effectuez de telles opérations arithmétiques avec des pointeurs, il n’incrémentera pas l’adresse de 1, mais l’incrémente de 1 fois la taille d’un élément.