| |
Programmation C |
|
Les tableaux :
int NomTab [5]; //
déclaration d'une variable de tableau
On vient de définir un tableau de nom
NomTab,
pouvant stocker 5 éléments de type
int.
Il faut faire ici une distinction entre le type des éléments de tableau et le
type de la variable tableau
Nomtab
: les éléments du tableau ont le type
int,
alors que la variable
NomTab
est de type int [5],
c'est à dire que
NomTab,
dans notre exemple, est de type "Tableau de 5 entiers".
Note : tous les éléments d'un tableau ont le même type.
On appelle index, le nombre situé entre [ ]. Il permet d'identifier chacun des
éléments d'un tableau.
Affectation de valeur :
Le comptage des éléments commence à zéro :
i[0]=10;
i[1]=15;
i[2]=8;
i[3]=1;
i[4]=25;
Nous venons d'affecter des valeurs à chacun des éléments du tableau. Ces
variables de tableau se manipulent comme toutes autres variables :
A propos de l'occupation en mémoire....
|
ELEMENT |
1 |
2 |
3 |
4 |
5 |
|
TYPE |
int |
int |
int |
int |
int |
OCCUPATION
MEMOIRE
(octet) |
2 |
2 |
2 |
2 |
2 |
|
NOM VARIABLE |
i[0] |
i[1] |
i[2] |
i[3] |
i[4] |
cette variable de tableau occupe 5 x 2 octets donc 10 octets.
Le fonctionnement d'un tableau est très simple : lorsque l'on appelle une
variable, l'ordinateur va chercher la valeur se trouvant à l'adresse mémoire de
cette variable.
Exemple :
int a,b,c;
a = 10;
b = 20;
c = a + b;
Une variable est
stockée en mémoire. Lorsque celle-ci est appelée, l'ordinateur
va chercher la valeur de cette variable à l'aide d'une adresse mémoire. Chaque
variable possède une adresse mémoire unique. La gestion des adressages n'est
bien sur pas à la charge du programmeur.
Imaginez un instant que la variable a (de valeur 10) possède l'adresse mémoire
1020.
Cette variable a occupe le 1020ème octet et le 1021ème octet en partant du
premier, le type int étant stocké sur 2 octets. Puis, au 1022ème octet,
commence une autre variable et ainsi de suite.
Pour une variable de tableau, l'adressage est un peu plus complexe.
Imaginons notre variable de tableau :
int Tab[5];
dont l'adresse mémoire est
2000. Le tableau occupe donc
les octets allant de 2000 à 2010, celui-ci étant composé de 5 éléments de 2
octets.
Entre les octets 2000 et 2010, voici comment s'organisent les 5 éléments de
notre tableau int Tab[5] :
|
ELEMENT |
Tab[0]
|
Tab[1]
|
Tab[2]
|
Tab[3]
|
Tab[4]
|
ADRESSE
MEMOIRE |
2000 |
2002 |
2004 |
2006 |
2008 |
|
Variable de tableau de nom
Tab, de type int [5] |
Tab[2]
possède l'adresse mémoire 2004. Sachant que les éléments de ce tableaux occupent
tous 2 octets, Tab[2]
occupe les octets 2004 et 2005.
D'une manière générale, l'ordinateur effectue deux calculs pour obtenir
l'adresse mémoire d'un élément de tableau :
OFFSET
= ( index ) X ( taille en octet du type d'élément composant le tableau )
Adresse mémoire de l'élément = adresse mémoire du premier élément +
OFFSET
Illustrons ceci : cherchons l'adresse de
Tab[3]
:
OFFSET = 3 x 2
OFFSET = 6
adresse mémoire de l'élément = 2000 + 6
adresse mémoire de l'élément = 2006
2006 correspond bien à l'adresse mémoire de
Tab[3].
La chaîne de caractère est un tableau :
De la même manière, les chaînes de caractères sont stockées sous forme de
tableau. Nous avons vu dans le précédent chapitre que le type char permettait de
stocker un unique caractère. Une chaîne de caractère étant composée de plusieurs
caractères, la déclaration suivante :
char
TabChaine[200]; // tableau de 200 élements de type char.
permet
de déclarer une variable de tableau de nom
TabChaine
pouvant accueillir jusqu'a 199
caractères (type char), appelé chaîne de caractères.
strcpy(TabChaine,"bjr toto"); //
Affecte la chaine "bjr toto" à la variable de tableau TabChaine, en logeant un
caractère dans chaque élément du tableau.
Voici la représentation de
cette chaîne de caractères :
|
Stockage de la chaîne "bjr
toto" |
| [0] |
[1] |
[2] |
[3] |
[4] |
[5] |
[6] |
[7] |
[8] |
| b |
j |
r |
|
t |
o |
t |
o |
\0 |
TabChaine[5]
est le 6ème élément du tableau, et représente le
caractère o. Le caractère nul (\0) représente la fin d'une chaîne de caractère.
|