67Fermer69
flankerLe 15/04/2009 à 19:07
Zerosquare (./67) :
Les pointeurs sont considérés comme "opaques" en C, tu n'es pas censé faire de manipulation sur leur valeur numérique. (Bon en l'occurence tu t'en fous puisque l'architecture hardware est fixe et connue pour toi, mais à la base c'était censé être un langage portable).
D'ailleurs, renseigne-toi sur ce qui dépend de l'implémentation (machine et/ou compilateur) en C, tu vas être surpris. En vrac : la taille et la représentation des entiers (pas forcément du binaire et du complément à 2), l'endianness, l'ordre et l'espacement des éléments dans une structure, l'effet d'un décalage de bits sur un nombre signé, l'ordre d'évaluation des expressions où il y a des pré/post incrémentations....

La conversion impossible d'un pointeur vers une fonction en un pointeur vers des données, également, je suppose qu'il y a également l'alignement des données ne mémoire, la valeur NULL, ...