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.