Maison > développement back-end > C++ > Les pointeurs en C ont-ils une taille fixe quel que soit le type de données vers lequel ils pointent ?

Les pointeurs en C ont-ils une taille fixe quel que soit le type de données vers lequel ils pointent ?

Patricia Arquette
Libérer: 2024-12-13 18:02:10
original
354 Les gens l'ont consulté

Do Pointers in C   Have a Fixed Size Regardless of the Data Type They Point To?

Comprendre la taille du pointeur en C

La question se pose : "La taille d'un pointeur dépend-elle de la taille du type vers lequel il pointe , ou les pointeurs conservent-ils toujours une taille fixe ?" Examinons ce concept en nous appuyant sur la question en double.

En C , les pointeurs possèdent généralement une taille fixe. Dans les exécutables 32 bits, ils occupent généralement 32 bits. Cependant, des exceptions existent, comme dans les anciennes versions de Windows, où les pointeurs 16 bits et 32 ​​bits devaient être différenciés.

Considérez l'extrait de code suivant :

int x = 10;
int *xPtr = &x;
char y = 'a';
char *yPtr = &y;

std::cout << sizeof(x) << "\n";
std::cout << sizeof(xPtr) << "\n";
std::cout << sizeof(y) << "\n";
std::cout << sizeof(yPtr) << "\n";
Copier après la connexion

Dans ce scénario, le résultat serait le suivant :

  • sizeof(x) : affiche la taille de la variable x, qui est 4 pour un exécutable 32 bits (en supposant que int fait 4 octets).
  • sizeof(xPtr) : affiche la taille de la variable de pointeur xPtr, qui reste généralement fixe comme mentionné précédemment, quel que soit le type vers lequel elle pointe.
  • sizeof(y) : affiche la taille de la variable de caractère y, qui est généralement de 1 octet pour un seul caractère.
  • sizeof(yPtr) : Semblable à xPtr, il affiche la taille de la variable de pointeur yPtr, qui est la même que xPtr.

Il est important de noter que même si les pointeurs ont généralement une taille cohérente, il n'est pas judicieux de se fier à cette hypothèse dans votre code. Si votre programme dépend de pointeurs d'une taille spécifique, vérifiez-le toujours explicitement.

Les pointeurs de fonction sont une exception notable. Leur taille peut varier en fonction de la convention d'appel utilisée par le système ou le compilateur spécifique. Reportez-vous à la réponse fournie par « Jens » pour plus d'informations sur les pointeurs de fonction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal