C_facile : Introduction au langage C
Cours

Cas des tableaux à deux dimensions

Exemple

Soit :

#define MAX_L 2

#define MAX_C 3

int t[MAX_L][MAX_C];

int i,j;

Si vous voulez utiliser les notations simples t[i][j] dans la fonction il faut indiquer au compilateur au minimum le nombre maximum de colonnes pour qu'il puisse générer les calculs d'adresses « ad hoc » (décalages de lignes).

A cet effet, nous vous rappelons que tab[i][j] est transformé.

Le compilateur calcule l'expression mathématique suivante pour avoir l'adresse :

t + ( i x MAX_C + j) x Taille avec Taille = sizeof(int)

Le nombre de colonnes MAX_C est donc absolument nécessaire pour que la fonction puisse se compiler.

Ci-dessous, des exemple d'en-tête de fonctions avec passage d'un tableau 2D en paramètre :

Exemple

void aff(double b[MAX_L][ MAX_C])

void aff(double b[][ MAX_C])

Les deux notations sont équivalentes et suffisantes. Ensuite nous avons le bloc suivant :

{

  int i,j;

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

      for (j=0;j<MAX_C;j++)

      {

          printf("\n tableau[%d][%d] = %4.3f",i,j,b[i][j]);

      }

}

Ci-dessous, des exemple de l'appel de la fonction précédente avec les déclarations suivantes :

Exemple

#define MAX_L 2

#define MAX_C 3

double td[MAX_L][MAX_C] = {{37.2,37.5, 20.8},{38.4, 40.5, 43.2}};

L'appel de la fonction est :

aff(td);

Prototypage de fonction (page suivante)Cas des tableaux à une dimension (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI