Selon ce code:on obtient la taille du tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <stdio.h> main() { int i, size; char list_ch[][2] = {'1', 'a', '2', 'b', '3', 'c', '4', 'd', '5', 'e', '6', 'f'}; size = &list_ch[5][1] - &list_ch[0][0] + 1; size *= sizeof(char); printf("Nombre total d'octets: %d.\n", size); for (i=0; i<6; i++) printf("%c %c\n", list_ch[i][0], list_ch[i][1]); return 0; }
Pour moi il faut déjà connaître la taille du tableau (de sa première dimension) pour écrire ce code sinon pourquoi utiliser le nombre «*5*» dans la ligneet pas un autre nombre? Comment savoir que l'adresse «*list_ch[5][1]*» existe?
Code : Sélectionner tout - Visualiser dans une fenêtre à part size = &list_ch[5][1] - &list_ch[0][0] + 1;
Personnellement, j'aurais utilisé la fonction sizeof() avec quelque chose comme:Suis-je dans le vrai ou dans l'erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <stdio.h> int main(void) { int i, size; char list_ch[][2] = {'1', 'a', '2', 'b', '3', 'c', '4', 'd', '5', 'e', '6', 'f'}; size = sizeof(list_ch); printf("Nombre total d'octets: %d.\n", size); printf("Taille de la premiere dimension: %d.\n", size/2); /* 2 car la taille de la deuxieme dimension */ for (i=0; i<size/2; i++) printf("%c %c\n", list_ch[i][0], list_ch[i][1]); return 0; }
Partager