Bases de la programmation en C
int m[3][4];
printf("%td\n", (char *)&m[2][1] - (char *)&m[0][0]);int fait 4 octets. Quelle est la sortie obtenue en exécutant le code ci-dessus ?
- A9
- B20
- C36
Afficher la réponse et l'explication
Réponse : C. 36
En C, un tableau à deux dimensions est rangé ligne par ligne (row-major) : m[3][4] est disposé dans l'ordre m[0][0] à m[0][3], m[1][0] à m[1][3], puis m[2][0] à m[2][3]. Avant m[2][1], il y a les 2 × 4 = 8 éléments des deux premières lignes et 1 élément de la même ligne, soit 9 éléments au total. Chaque élément fait 4 octets : la distance depuis le début est de 9 × 4 = 36 octets. La soustraction se fait après conversion en char *, si bien que la différence est exprimée en octets.
Continuer : 9 autres questions sur Bases de la programmation en C