Parcourir un tableau



Supposons que je veuille maintenant afficher les valeurs de chaque case du tableau.
Je pourrais faire autant de printf qu'il y a de cases. Mais bon, ce serait répétitif et lourd, et imaginez un peu la taille de notre code si on devait afficher le contenu de chaque case du tableau une à une !

Le mieux est de se servir d'une boucle. Pourquoi pas d'une boucle for ? Les boucles for sont très pratiques pour parcourir un tableau :

int main(int argc, char *argv[])

{

    int tableau[4], i = 0;


    tableau[0] = 10;

    tableau[1] = 23;

    tableau[2] = 505;

    tableau[3] = 8;


    for (i = 0 ; i < 4 ; i++)

    {

        printf("%d\n", tableau[i]);

    }


    return 0;

}



Code : 

10

23

505

8



Notre boucle parcourt le tableau à l'aide d'une variable appelée i (c'est le nom très original que les programmeurs donnent en général à la variable qui leur permet de parcourir un tableau !).

Ce qui est particulièrement pratique, c'est qu'on peut mettre une variable entre crochets. En effet, la variable était interdite pour la création du tableau (pour définir sa taille), mais elle est heureusement autorisée pour « parcourir » le tableau, c'est-à-dire afficher ses valeurs !
Ici, on a mis la variable i, qui vaut successivement 0, 1, 2, et 3. De cette façon, on va donc afficher la valeur de tableau[0], tableau[1], tableau[2] et tableau[3] !

Attention à ne pas tenter d'afficher la valeur de tableau[4] ! Un tableau de 4 cases possède les indices 0, 1, 2 et 3, point barre. Si vous tentez d'afficher tableau[4], vous aurez soit n'importe quoi, soit une belle erreur, l'OS coupant votre programme car il aura tenté d'accéder à une adresse ne lui appartenant pas.




Initialiser un tableau



Maintenant que l'on sait parcourir un tableau, nous sommes capables d'initialiser toutes ses valeurs à 0 en faisant une boucle !

Bon, parcourir le tableau pour mettre 0 à chaque case, c'est de votre niveau maintenant :

int main(int argc, char *argv[])

{

    int tableau[4], i = 0;


    // Initialisation du tableau

    for (i = 0 ; i < 4 ; i++)

    {

        tableau[i] = 0;

    }


    // Affichage de ses valeurs pour vérifier

    for (i = 0 ; i < 4 ; i++)

    {

        printf("%d\n", tableau[i]);

    }


    return 0;

}



Code :

0

0

0

0




Une autre façon d'initialiser



Il faut savoir qu'il existe une autre façon d'initialiser un tableau un peu plus automatisée en C.


Elle consiste à écrire tableau[4] = {valeur0, valeur1, valeur2, valeur3}. En clair, vous placez les valeurs une à une entre accolades, séparées par des virgules :

int main(int argc, char *argv[])

{

    int tableau[4] = {0, 0, 0, 0}, i = 0;


    for (i = 0 ; i < 4 ; i++)

    {

        printf("%d\n", tableau[i]);

    }


    return 0;

}



Code : 

0

0

0

0



Mais en fait, c'est même mieux que ça : vous pouvez définir les valeurs des premières cases du tableau, toutes celles que vous n'aurez pas renseignées seront automatiquement mises à 0.

Ainsi, si je fais :

int tableau[4] = {10, 23}; // Valeurs insérées : 10, 23, 0, 0



… la case n° 0 prendra la valeur 10, la n° 1 prendra 23, et toutes les autres prendront la valeur 0 (par défaut).

Comment initialiser tout le tableau à 0 en sachant ça ?


Eh bien il vous suffit d'initialiser au moins la première valeur à 0, et toutes les autres valeurs non indiquées prendront la valeur 0.

int tableau[4] = {0}; // Toutes les cases du tableau seront initialisées à 0



Cette technique a l'avantage de fonctionner avec un tableau de n'importe quelle taille (là, ça marche pour 4 cases, mais s'il en avait eu 100 ça aurait été bon aussi).


Attention, on rencontre souvent int tableau[4= {1};, ce qui insère les valeurs suivantes : 1, 0, 0, 0.


Contrairement à ce que beaucoup d'entre vous semblent croire, on n'initialise pas toutes les cases à 1 en faisant cela : seule la première case sera à 1, les autres seront à 0. On ne peut donc pas initialiser toutes les cases à 1 automatiquement, à moins de faire une boucle.

Créé avec HelpNDoc Personal Edition: Produire des livres EPub gratuitement