Vous êtes sur la page 1sur 8

Chapitre 8: Les tableaux

Il arrive en C qu'on est besoin, un moment ou un autre, de stocker des valeurs dans ce qu'on
appelle une table de donne (ou encore plus simplement : tableau). Le langage C permet cela
voyons
maintenant
comment
dclarer
un
tableau.
Il existe deux types de tableaux :

Les tableaux Statiques : ce sont des tableaux dont la taille est connue la compilation
Les tableaux Dynamiques : ce sont des tableaux dont la taille n'est connue qu' l'excution.

Pour le moment nous ne verrons que les tableaux statiques, nous aborderons les tableaux
dynamiques lorsque nous parlerons de la gestion de la mmoire ou encore d'allocation dynamique.

Dclaration d'un tableau


Syntaxe :
Code c:

Type nomDuTableau[nombreDElements];

Exemple :
Code c:

int tableau[4];

On dclare ici un tableau de type int contenant 4 valeurs de type int. "[4]" reprsente le nombre de
cases du tableau, on aura donc ici un tableau de type int de 4 cases, ces cases tant remplies de
donnes
de
type
int uniquement .
De plus la taille du tableau doit tre connue la compilation, et on vitera par dessus tout de
dfinir sa taille partir d'une variable. Ainsi :
Code c:

int variable = 4;
int tableau[variable];

N'est

valable

qu'en

C99.

Utiliser un tableau
Maintenant que notre tableau est cr, il va falloir le remplir de valeurs. Pour initialiser toutes les
cases du tableau 0 on peut utiliser la mthode qui suit :
Code c:

int tableau[4] = {0};

On

initialise

ici

toutes

les

cases

du

tableau

zro.

Cependant, il se peut que ds la dclaration du tableau, on connaisse certaines valeurs, on peut


donc remplir notre tableau avec celle-ci.
Rappel : Toutes les valeurs du tableau sont du mme type que le tableau ... (mieux vaut trop que
pas assez
)

Code c:

int tableau[4] = {2, 23, 25, 92};

Chaque case du tableau (ici 4) est donc initialise une valeur de type int donne. Ici tableau[0]
vaudra 2; tableau[1] vaudra 23; etc.
Il faut savoir que si on indique pas toutes les valeurs du tableau, alors les valeurs non dfinies
prendrons
la
valeur
0.
Par exemple :
Code c:

int tableau[4] = {2};

Alors seulement tableau[0] aura la valeur 2.


A note qu'on peut aussi remplir le tableau de cette faon :
Code c:

int tableau[] = {2, 23, 25, 92};

Vous voyez ici qu'on indique plus le nombre de cases du tableau, en fait le compilateur se chargera
pour
nous
de
calculer
la
taille
du
tableau.
Maintenant que notre tableau est rempli, il peut tre intressant d'exploiter les valeurs qui lui sont
rattaches.
il faut savoir que la premire valeur se situe dans la case 0 du tableau et non dans la case 1. Ce qui
peut porter confusion car on serait tent de rcuprer la valeur situer dans tableau[4] mais si on
fait cela, on essaye de d'accder une case en mmoire qui n'est pas accorde au tableau et trs
certainement pas non plus notre programme (ce qui le dont d'nerver particulirement votre OS
qui vous le signalera par sa belle fentre d'erreur prvue cet effet
), soyez vigilant donc et
n'oubliez pas que la dernire valeur de votre tableau se situe dans la case tailleTableau - 1 donc

dans notre cas tableau[3]


Pour rcuprer les valeurs d'un tableau, une boucle for peut faire l'affaire ainsi si on souhaite
retrouver les valeurs du tableau, on utilise la mthode suivante :
Code c:

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


printf("Valeur contenu dans tableau[%d] = %d\n", i,
tableau[i]);
/* A chaque tour de boucle on incrmente (= i + 1) notre variable
i, ce qui fait qu'on accdera toute las cases du tableau, on
arrte la boucle quand i est gal trois pour viter d'accder
dans un bloc mmoire qui ne nous est pas rserv */
}

Ce

qui

nous

donne

aprs

compilation

Code console:

Valeur de tableau[0] = 2
Valeur de tableau[1] = 23
Valeur de tableau[2] = 25
Valeur de tableau[3] = 92
Pour rsumer ce paragraphe je vous propose de concevoir ensemble un programme qui calcul la
moyenne de toutes les valeurs de notre tableau.
Code c:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
double tableau[4] = {2.0, 16.5, 58.56, 19.92};
/* On initialise notre tableau avec 4 valeurs de type double
*/
double moyenne = 0.0;
double sommeTotale = 0.0;
for (i = 0; i < 4; i++) {
printf("Valeur de tableau[%d] = %lf\n", i, tableau[i]);
sommeTotale += tableau[i]; // Revient crire
sommeTotale = sommeTotale + tableau[i]
/* On affiche les valeurs contenues dans le tableau et on
les additionne la variable sommeTotale */
}
moyenne = sommeTotale / 4;

printf("\nMoyenne des valeurs du tableau : %lf", moyenne);


}

return 0;

Ce

qui

nous

donne

Code console:

Valeur de tableau[0] = 2.000000


Valeur de tableau[1] = 16.500000
Valeur de tableau[2] = 58.560000
Valeur de tableau[3] = 19.920000
Moyenne des valeurs du tableau : 24.245000

Utiliser un tableau dans une fonction


Pour envoyer un tableau une fonction, il suffit simplement de lui envoyer son adresse une
variable
du
mme
type
que notre tableau.
C'est
aussi simple
que
a
Voil un petit code source qui nous prsente cela :
Code c:

#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[]);
int main(void)
{
int tableau[4] = {2, 23, 25, 92};
afficherTableau(tableau);
}

return 0;

void afficherTableau(int tableau[])


{
int i = 0;

Ce

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


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

qui

nous

donne

Code console:

Tableau[0] = 2
Tableau[1] = 23
Tableau[2] = 25
Tableau[3] = 92
On suppose ici qu'on connait la taille du tableau car sinon il vous faudra aussi envoyer la taille de
celui
ci
pour
viter
les
erreurs
Faites attention donc ce que la lecture et l'criture des donnes d'un tableau soit dans les limites
de
celui-ci
!
Il est aussi possible d'envoyer un tableau une fonction de cette manire :
Code c:

void afficherTableau(int *tableau);


int main(void)
{
int tableau[4] = {2, 23, 25, 92};
afficherTableau(tableau);
}

return 0;

void afficherTableau(int *tableau)


{
int i = 0;

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


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

Vous voyez ici qu'on a simplement remplacer les crochet par une toile symbolisant un pointeur, c'est
autoris car un tableau est considr comme un pointeur. Vous pouvez accder aux lments du
tableau
de
la
mme
manire
en
respectant
les
limites
de
celui-ci.
Entrainez vous raliser de petits programmes envoyant des tableaux des fonctions, c'est le
meilleur
moyen
de
progresser

Les tableaux deux dimensions


Pour le moment nous avons vu des tableaux une seule dimension. Mais il est possible en C de crer
des tableaux deux dimensions, aussi appeler matrice (toute rfrence un film amricain est
proscrire
)
Ce style de tableaux est assez complexe et droutants pour les dbutants cependant leur utilit n'est
plus dmontrer et il est probable qu'un jour o l'autre vous en ayez besoin.
Avant de vous montrer la syntaxe d'un tableau deux dimensions, il me semble essentiel d'en
rappeler
le
principe.

Deux dimensions signifient qu'on a deux entres dans notre tableau. Ainsi voil quoi ressemblerait
un
tableau
de
2
cases
sur
2
:

Ainsi la valeur 10 se trouve dans la colonne 1 la ligne 1 et la valeur 15 dans la colonne 2 la ligne
1.
En C, on commence d'abord par la colonne puis par la ligne, de plus la premires colonnes se situ
aussi la case 0 et non 1, ainsi on dira la valeur 10 est dans la colonne 0 la ligne 0.
Voici donc comment dclarer notre tableau de 2 colonnes sur 2 lignes en C :
Code c:

int tableau[2][2];

Maintenant nous allons initialise notre tableau avec les valeurs ci-dessus, en commenant donc par
remplir chaque colonne une par une.
Code c:

int tableau[2][2] = {{10, 20}, {15, 35}};

On dlimite ici chaque colonne par des accolades, ce n'est pas obligatoire mais a permet de
clairement voir ce que l'on fait sans tre embrouill avec les diffrentes valeurs. On commence donc
par la colonne 0 et on rempli chaque ligne de cette colonne, dans l'ordre jusqu' ce qu'elle soit
pleine,
ensuite
on
passe

la
colonne
suivante.
Voyons
comment
utiliser
nos
tableaux
dans
des
fonctions.

Utiliser un tableau deux dimensions dans une fonction


Envoyer un tableau deux dimensions une fonction n'est pas trs compliqu, puisqu'on utilise la
mme syntaxe que pour un tableau une dimension, si ce n'est qu'on rajoute bien videmment la
deuxime paire de crochets pour signaler qu'on utilisera une matrice.
Contrairement un tableau une dimension, il faut crire la taille de votre tableau deux
dimensions.
Ainsi il faut donc suivre le code suivant :
Code c:

#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[2][2]);
int main(void)
{

int tableau[2][2] = {{10, 20} , {15, 35}};


afficherTableau(tableau);
return 0;

void afficherTableau(int tableau[2][2])


{
/* ... */
}

Maintenant si on souhaite rcuprer les valeurs du tableau (pour les afficher par exemple, deux
boucles for suffisent :
Code c:

#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[2][2]);
int main(void)
{
int tableau[2][2] = {{10, 20} , {15, 35}};
afficherTableau(tableau);
return EXIT_SUCCESS; /* Equivalent return 0 sous Windows,
permet un code portable */
}
void afficherTableau(int tableau[2][2])
{
int i = 0;
int j = 0;
for (i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
printf("Tableau[%d][%d] = %d\n", i, j, tableau[i][j]);
}
}
}

En oubliant pas qu'on lis les valeurs colonnes par colonnes et non pas lignes par lignes ! Ici ce code
nous
affiche
donc
:
Code console:

Tableau[0][0] = 10
Tableau[0][1] = 20
Tableau[1][0] = 15
Tableau[1][1] = 35

Voil vous savez l'essentiel savoir sur les tableaux. Si vous avez la moindre question n'hsitez pas
la poser sur le forum. Dans le prochain tutoriel nous verrons les types avances du langage C :
structures, typedef, unions et numrations.

Plan du site | Copyright 2006 - 2013 Apprendre Informatique - Cours informatique |


A propos du site

Nettoyage P