Selon ce code:
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;
}
on obtient la taille du tableau.
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 ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
size = &list_ch[5][1] - &list_ch[0][0] + 1;
et pas un autre nombre? Comment savoir que l'adresse «*list_ch[5][1]*» existe?
Personnellement, j'aurais utilisé la fonction sizeof() avec quelque chose comme:
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;
}
Suis-je dans le vrai ou dans l'erreur?