Tableaux

Un tableau est une collection de valeurs du même type. On peut accéder aux éléments par des index.

Un tableau se crée ainsi :

type nom_tableau[nombre_elements] = { valeur_1, valeur_2, valeur_3 };

On peut mettre autant d'éléments que l'on veut.

Tableaux de types simples

Pour créer un tableau d'entiers, de floats ou de char, il suffit de remplir le tableau avec les bonnes valeurs.

int variable = 666;
int levels[6] = {0, 1, -1, 2600, variable, 42 };

char alpha[3] = {'x', 'y', 'z'};

Pour accéder à un élément du tableau, il suffit d'utiliser cette notation :

element = array[index];

A savoir : l'index commence toujours à 0.

Ainsi si je reprends le tableaux levels, il faut le lire avec les index suivants :

Index012345
Valeur01-1260066642

Ainsi, pour accéder à un élémeent d'un tableau de type int :

int levels[6] = {0, 1, -1, 2600, variable, 42 };

int level = levels[2]; // => level = -1

levels[0] = 21; // array = 21 1 -1 2600 666 42

Attention à ne pas utiliser un index plus grand que le nombre d'éléments dans le tableau. Si tu dépasses, tu récupéreras une valeur ailleurs en mémoire, que tu ne contrôles pas.

Tableau à zéro

Si tu veux remplir une partie du tableau et laisser le reste à 0 ou même l'initialiser complètement à 0, tu n'es pas obligé de tout définir, le compilateur va pour toi mettre la partie non définie à 0.

int array_1[10] = { 1, 1, 1 }; // => 1 1 1 0 0 0 0 0 0 0
int array_2[10] = { 0 }; // => 0 0 0 0 0 0 0 0 0 0

Nombre d'éléments calculé à la compilation

Si tu ne sais pas combien d'éléments ton tableau va recevoir, tu n'es pas obligé de mettre une taille, le compilateur comptera le nombre d'éléments que tu as écrit entre les accolades.

int array[] = { 1, 2, 3, 4, 5 }; // => 5 éléments

Taille d'un tableau

Pour avoir la taille utilisée par un tableau en mémoire, tu peux utiliser l'opérateur que tu connais, sizeof.

A ton avis, combien d'octets prend en mémoire un tableau de type int à 10 éléments ?

Si un int utilise 4 octets, alors 10 int vont en utiliser 10 fois plus, donc 40 octets.

int array[10] = { 0 };
int size = sizeof (array);

printf("size of array: %lu\n", size);

Nombre d'éléments dans un tableau

Pour savoir le nombre d'éléments dans un tableau sans compter un par un, on peut utiliser sizeof.

int array[] = { beaucoup mais alors vraiment beaucoup de valeurs };

int nbr_elements = sizeof (array) / sizeof (array[0]);

Que fait-on exactement ?

sizeof (array) donne la taille du tableau en octets

sizeof (array[0]) donne la taille d'un élément du tableau en octets

Si on divise la taille totale par la taille d'un élément, nous avons bien le nombre d'éléments dans un tableau.

On utilise array[0] car on ne sait pas combien d'éléments a le tableau, mais étant donné qu'il doit en avoir au moins 1, on utilise tout simpelemnt le premier qui est obligatoirement existant.

Tableaux pour chaines de caractères

Je t'avais dis que pour faire une chaîne de caractères, tu devais écrire :

char *text = "salut les loulous";

et que cette chaîne de caractères est constante et que tu ne peux pas la modifier.

Tu peux utiliser la notation de tableau pour avoir une chaîne de caractères que tu peux modifier.

char text[] = "salut les poutous";
printf("%s\n", text);
text[10] = 'l';
text[13] = 'l';
printf("%s\n", text);