Les tableaux en langage C

Qu'est-ce qu'un tableau ?

Un tableau (array en anglais) permet, par un rassemblement d'espaces mémoire contigus, de définir une seule variable pour un type de données, et par exemple les afficher avec une seule boucle.
Ces espaces mémoire sont référencés par un numéro partant de zéro, croissant jusqu'à atteindre la valeur "nombre d'espaces moins un".

Dans le cas où un tableau contient d'autres tableaux, on parle alors de tableau à plusieurs dimensions, ou multidimensionnels.

Déclaration

La méthode de déclaration est identique à celle d'une variable, mais les crochets permettent de spécifier le nombre d'éléments du tableau.
Les crochets sont cependant obligatoires, même si aucune valeur n'est spécifiée, car ils spécifient qu'il s'agit d'un tableau.


Code c (Syntaxe de déclaration d'un tableau) (1 ligne) :
  1. int t[10];

int est le type des élément du tableau. Un tableau ne peut être composé que d'un seul type d'élément, et il n'est pas question de mélanger par exemple des entiers et des flottants.
t est le nom que l'on attribue au tableau, nom qui peut être plus explicite (exemple: int cotes[10]).
[10] est le nombre d'éléments du tableau. C'est ce qui détermine la taille de l'emplacement mémoire réservé pour le tableau.

Remarques:

  1. /* tableau.c */
  2. #include<stdio.h>
  3. #define nmax 10
  4. /* Il suffit de changer ici la valeur définie pour nmax, et toutes les références ultérieures à nmax seront modifiées. */
  5. void main (void)
  6. {
  7. int t[nmax];
  8. int i=0,q=0,nmax,n;
  9. intcontinu =0;
  10. lect(t,n);
  11. printf ( /* suite du programme...*/

Initialisation

Les valeurs d'initialisations peuvent se trouver dans la déclaration. Dans ce cas, la déclaration est suivie du signe d'affectation = et les valeurs sont séparées par des virgules, l'ensemble de ces valeurs étant encadré par des accolades.


Code c (Initialisation des valeurs d'un tableau) (1 ligne) :
  1. int cotes[10]={10,4,7,8,6,6,9,5,3,8};

Remarques:

  • Dans cet exemple, cotes[0] prend la valeur 10, cotes[1] prend la valeur 4, etc.
  • On ne peut définir plus d'éléments que le nombre définit entre crochets.
  • Si on ne définit pas de nombre entre crochets, il faut donner les valeurs d'initialisation, et le tableau sera créé en fonction du nombre de valeurs.
    Par exemple, int cotes[ ]={10,4,7,8,6,6,9} crée un tableau de 7 éléments (qui sont tous définis).
    C'est particulièrement pratique lorsque l'on veut éviter de calculer le nombre de caractères dans une chaîne (exemple: char nom[ ]="Gaudry Stéphane";).
  • int cotes[10]={10,4,7,8,6,6,9} crée un tableau de 10 éléments, dont les 3 derniers se voient attribuer la valeur 0 de par l'absence de valeurs initiales pour ces valeurs (en C++).
  • int cotes[10]={0} crée un tableau de 10 éléments, le premier se voyant attribuer la valeur 0, les autres se voyant attribuer la valeur 0 de par l'absence de valeurs initiales pour ces valeurs.

Manipulations des éléments d'un tableau

Il est possible d'intervenir sur les éléments d'un tableau, comme sur toutes les variables.

Exemples de manipulations:

Saisie de la valeur de type entier située à l'index k+2 du tableau t.

  1. scanf("%d",t[k+2]);

Affectation de la valeur 5 à la deuxième valeur du tableau t.

  1. t[k+1]=5;

Utilisation de la quatrième valeur du tableau t dans une opération (qui sert d'affectation pour la valeur a).

  1. a=b+t[3]/2;

Impression à l'écran de la valeur située à l'index 5+k du tableau t

  1. printf("x = %d\n",t[5+k]);

Tableaux multidimensionnels (le tableau1 est composé de tableaux).

  1. tableau1[tableau2[i]+3];

Accès aux éléments

Comme nous l'avons vu dans l'introduction, un élément d'un tableau est référencé par une valeur entière, le premier élément référencé par l'index 0, le second par l'index 1, et ainsi de suite. Il est donc possible de lire ou d'écrire une valeur dans un emplacement spécifique en mentionnant son index .
On remarque que l'index d'un élément est décrémenté de 1 par rapport à sa position, car l'indexation débute par le 0.

Parcourir les éléments du tableau

Il est souvent nécessaire de parcourir les différents éléments du tableau un à un, afin de leur affecter une valeur, ou de les afficher, les comparer, etc.
L'utilisation de la boucle for répond très bien à ce genre de demande. En effet, il est possible de déterminer par élément nous allons débuter, ensuite jusqu'à quel élément nous parcourons le tableau, et de quelle manière, puis enfin les instructions que nous désirons appliquer à ces éléments.

Exemple de boucles for:

  1. /*début du programme */
  2. for (k=0;k<nmax;k++)
  3. {
  4. instruction(s);
  5. }
  6. /* suite du programme...*/

k=0;

C'est depuis le premier élément (adresse 0) du tableau que nous travaillons.

k<nmax;

Dans ce cas, les instructions sont appliquées jusqu'au dernier élément, et nous nous préservons de déborder de l'espace mémoire alloué au tableau.

k++;

Post incrémentation du compteur k, ce qui nous permet d'envisager les éléments un à un.

Affectation de valeurs

Dans notre premier exemple de tableau (int t[10];), nous avons déclaré un tableau de dix valeurs, sans les initialiser. En affichant ces valeurs, nous constatons que cet emplacement mémoire n'est pas vide. Au contraire, il est composé de résidus de données ou de programmes, ce qui engendre une traduction par la machine en fonction du type de données que le tableau est sensé contenir.

Une des possibilités les plus utilisées pour systématiser l'affectation de valeurs au sein d'un tableau est l'utilisation de la boucle for, avec un compteur, et une incrémentation ou une décrémentation afin d'en parcourir toutes les cases.

Exemples de boucles for:

  1. /*début du programme */
  2. for (k=0;k<nmax;k++)
  3. {
  4. t[k]=2001; /* On affecte la valeur 2001 à chaque élément du tableau. */
  5. }
  6. /* suite du programme... */
  7. for (k=0;k<nmax;k++)
  8. {
  9. t[k]=k; /* On obtient ainsi une numérotation des lignes, ce qui peut être pratique lors de l'affichage de tableaux multidimensionnels. */
  10. }
  11. /* fin du programme... */

Remarque

Il faut impérativement vérifier que l'on n'écrase pas de code au delà des limites du tableau. Il est donc possible de déterminer une valeur nmax qui représente le nombre d'emplacements mémoire du tableau, et de contrôler que l'index de la valeur à traiter dans le tableau ne soit pas supérieur à nmax-1.

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

10 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-12
Document créé le 19/03/02 00:00, dernière modification le Mardi 27 Juin 2017, 11:58
Source du document imprimé : http:///www.gaudry.be/c-array.html
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15838 documents
455 astuces.
550 niouzes.
3107 definitions.
447 membres.
8121 messages.

Document genere en :
0,13 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Le temps est limité alors ne perds pas ton temps à vivre la vie de quelqu'un d'autre.

Steve Jobs
 
l'infobrol
Nous sommes le Mercredi 22 Novembre 2017, 17:19, toutes les heures sont au format GMT+1.00 Heure, heure d'hiver