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 ?
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";
Dans ce scénario, le résultat serait le suivant :
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!