Je crois qu'il n'est pas nécessaire que les pointeurs aient tous la même taille. La seule exigence est que tous les pointeurs d'objet peuvent être stockés dans void *
, que lorsqu'ils sont transtypés en void *
et inversement, ils seront identiques, et que tous les pointeurs de fonction, s'ils sont lancés sur un autre type de pointeur de fonction et reviennent, seront identiques . (Je ne suis pas sûr que les pointeurs de fonction de coulée soient void *
.)
En pratique, je pense que la seule fois où vous trouverez des pointeurs de différentes tailles est si vous vous souciez des pointeurs de fonctions membres du C++, ou vous travaillez sur une architecture plus obscure.
En C90, char arr[];
est un moyen valide de pré-déclarer un tableau global de longueur à déterminer. Notez que char arr[]
est un type incomplet, vous devez donc le déclarer avant de pouvoir utiliser sizeof
. Ce n'est pas valide comme c'est le cas en C99, pour faire des membres de tableau flexibles.
Dup de [Existe-t-il des plateformes où les pointeurs vers différents types ont des tailles différentes?] (Http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to- different-types-have-different-size), [La taille des pointeurs peut-elle varier en fonction de ce qui est pointé?] (http://stackoverflow.com/questions/1473935/can-the-size-of-pointers-vary- En fonction de ce qui est pointé vers) – outis
vous devez diviser en deux questions afin qu'ils puissent être bien répondu séparément –
Dupliquer de [sont tous les pointeurs de données de la même taille dans une plate-forme?] (http: // stackoverflow. com/questions/1241205/are-all-data-pointeurs-de-la-même-taille-dans-une-plate-forme) –