Pour commencer, nous allons voir comment définir un tableau de 4 int :
Code : C
Voilà c'est tout

Il suffit donc de rajouter entre crochets le nombre de cases que vous voulez mettre dans votre tableau. Il n'y a pas de limite (à part peut-être la taille de votre mémoire

).
Maintenant, comment accéder à chaque case du tableau ?
Il faut écrire tableau[numeroDeLaCase].
Très important : un tableau commence à l'indice n°0 ! Notre tableau de 4 int a donc les indices 0, 1, 2 et 3. Il n'y a pas d'indice 4 ! C'est une source d'erreurs très courante, souvenez-vous en !
Si je veux mettre dans mon tableau les mêmes valeurs que celles indiquées dans mon schéma, je devrai donc faire :
Code : C1
2
3
4
5
6 | int tableau[4];
tableau[0] = 10;
tableau[1] = 23;
tableau[2] = 505;
tableau[3] = 8;
|
Tu as dit qu'il y avait des pointeurs avec les tableaux. Où ça, je n'en vois pas ?
En fait, si vous écrivez juste "tableau", vous avez un pointeur. C'est un pointeur sur la première case du tableau.
Faites le test :
Code : C1
2
3 | int tableau[4];
printf("%d", tableau);
|
Résultat, on voit l'adresse où se trouve tableau :
Code : Console
En revanche, si vous indiquez l'indice de la case du tableau entre crochets, vous obtenez la valeur :
Code : C1
2
3 | int tableau[4];
printf("%d", tableau[0]);
|
Code : Console
De même pour les autres indices.
Notez que, comme tableau est un pointeur, on peut utiliser le symbole * pour connaître la première valeur :
Code : C1
2
3 | int tableau[4];
printf("%d", *tableau);
|
Code : Console
Il est aussi possible d'avoir la valeur de la seconde case en tapant
*(tableau + 1) (adresse de tableau + 1).
Les 2 lignes suivantes sont donc identiques :
Code : C1
2 | tableau[1] // Renvoie la valeur contenue dans la seconde case (la première case étant 0)
*(tableau + 1) // Identique : renvoie la valeur contenue dans la seconde case
|
Donc, quand vous écrivez tableau[0], vous demandez la valeur qui se trouve à l'adresse tableau + 0 cases (c'est-à-dire 1600).
Si vous écrivez tableau[1], vous demandez la valeur se trouvant à l'adresse tableau + 1 case (c'est-à-dire 1601).
Et ainsi de suite pour les autres valeurs
Les tableaux à taille dynamique
Le langage C existe en plusieurs versions.
Une version récente, appelée le C99, autorise la création de tableaux à taille dynamique, c'est-à-dire de tableaux dont la taille est définie par une variable :
Code : C1
2 | int taille = 5;
int tableau[taille];
|
Or, cela n'est pas forcément reconnu par tous les compilateurs, certains planteront sur la ligne n°2.
Le langage C que je vous enseigne depuis le début (appelé le C89) n'autorise pas ce genre de choses. Nous considèrerons donc que faire cela est
interdit.
Nous allons nous mettre d'accord sur la chose suivante : vous n'avez pas le droit de mettre une variable entre crochets pour la définition de la taille du tableau,
même si cette variable est une constante !
const int taille = 5; ne marchera donc pas mieux.
Le tableau doit avoir une dimension fixe, c'est-à-dire que vous devez écrire
noir sur blanc le nombre correspondant à la taille :
Code : C
Mais... Alors il est interdit de créer un tableau en fonction de la taille d'une variable ?
Non rassurez-vous, c'est possible ! (même en C89

)
Mais pour faire cela nous utiliserons une autre technique (plus sûre et qui marche partout) appelée
l'allocation dynamique. Nous verrons cela bien plus tard dans la partie II de ce cours.