Bases de la programmation en C

int fait 4 octets et un pointeur 8 octets. Si la valeur (l'adresse) d'un pointeur sur int p est 0x1000, quelle est la valeur de p + 3 ?

  1. A0x100C
  2. B0x1012
  3. C0x1018
Afficher la réponse et l'explication

Réponse : A. 0x100C

Ajouter un entier à un pointeur le fait avancer par pas égaux à la taille du type pointé. int fait 4 octets : p + 3 pointe donc 3 × 4 = 12 octets plus loin, soit sur 0x1000 + 0xC = 0x100C. p + 3 est l'adresse de l'élément de tableau p[3], et *(p + 3) a le même sens que p[3]. Un pointeur sur char avance d'un octet à la fois, et un pointeur sur double (8 octets) de 8 octets à la fois.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation en C

  1. int fait 4 octets et un pointeur 8 octets. Quelle est la sortie obtenue en exécutant le programme ci-dessus ?
  2. int fait 4 octets. Quelle est la sortie obtenue en exécutant le code ci-dessus ?
  3. Quelle est la sortie obtenue en exécutant le code ci-dessus, qui porte sur un tableau de char contenant une chaîne ?
  4. Après les déclarations ci-dessus, on écrit l'une des instructions A « p = t; », B « *p = 'x'; », C « q = t; » ou D « *q = 'x'; ». Quelle combinaison indique celles qui provoquent une erreur de compilation ?
  5. Quelle est la sortie obtenue en exécutant le programme ci-dessus, qui utilise un tableau de pointeurs de fonction ?