"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi l'incrémentation d'un pointeur entier en C augmente-t-elle de 4 octets?

Pourquoi l'incrémentation d'un pointeur entier en C augmente-t-elle de 4 octets?

Publié le 2025-02-23
Parcourir:990

Why Does Incrementing an Integer Pointer in C Increase by 4 Bytes?

Incrément des pointeurs int en C: dévoiler l'incrément à 4 octets

En C, les règles arithmétiques du pointeur dictent que l'incrémentation des résultats intrigue dans un incrément de 4 octets, plutôt que l'incrément attendu de 1 octet. Cette divergence a perplexe de nombreux programmeurs, conduisant à des questions comme:

q: Pourquoi int pointer '' incrément par 4 plutôt que 1?

a: L'incrément d'un pointeur int de 4 octets est lié à la taille du type de données qu'il pointe. Chaque variable int occupe 4 octets de mémoire, donc l'incrémentation d'un pointeur int déplace le pointeur vers l'int suivant, qui est situé à 4 octets dans la mémoire.

Code de test:

int a = 1, *ptr;
ptr = &a;
printf("%p\n", ptr);
ptr  ;
printf("%p\n", ptr);

sortie attendue:

0xBF8D63B8
0xBF8D63B9

sortie réelle:

0xBF8D63B8
0xBF8D63BC

La différence de sortie est due à l'incrément de 4 octets. Alors que la sortie attendue montre un incrément de 1 octet, la sortie réelle démontre le saut de 4 octets, conduisant à un saut notable dans les adresses de mémoire.

Question supplémentaire: Visiter int octets intydans individuellement

q: comment visiter les 4 octets qu'un int en occupe un par un?

a: Pour accéder aux octets individuels d'un int, vous pouvez lancer le pointeur int sur un pointeur char, qui a une taille de 1 octet. Ensuite, vous pouvez incrémenter le pointeur char pour naviguer dans les octets de l'int.

Exemple:

int i = 0;
int* p = &i;

char* c = (char*)p;
char x = c[1]; // one byte into an int

Dans cet exemple, le premier octet de la variable int est accessible en utilisant l'expression C [1]. Vous pouvez incrémenter le pointeur C pour accéder aux octets ultérieurs au sein de l'int.

Comprendre les règles arithmétiques du pointeur pour différents types de données est crucial pour assurer une gestion correcte de la mémoire dans la programmation C. En comprenant les raisons de l'incrément de 4 octets pour les pointeurs int, vous pouvez empêcher les pièges communs et écrire du code plus efficace.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3