Previous Next Up Index Contents

10.5.4. Passage de l'adresse d'un tableau à une dimension

Méthode

Comme il est impossible de passer 'la valeur' de tout un tableau à une fonction, on fournit l'adresse d'un élément du tableau.

En général, on fournit l'adresse du premier élément du tableau, qui est donnée par le nom du tableau.

Déclaration

Dans la liste des paramètres d'une fonction, on peut déclarer un tableau par le nom suivi de crochets,

   <type> <nom>[]
ou simplement par un pointeur sur le type des éléments du tableau:
   <type> *<nom>

Exemple

La fonction strlen calcule et retourne la longueur d'une chaîne de caractères fournie comme paramètre:

int strlen(char *S)
{
 int N;
 for (N=0; *S != '\0'; S++)
         N++;
 return N;
}

A la place de la déclaration de la chaîne comme

	char *S
on aurait aussi pu indiquer
	char S[]
comme nous l'avons fait dans l'exemple d'introduction (chapitre 10.1.2). Dans la suite, nous allons utiliser la première notation pour mettre en évidence que le paramètre est un pointeur variable que nous pouvons modifier à l'intérieur de la fonction.

Appel

Lors d'un appel, l'adresse d'un tableau peut être donnée par le nom du tableau, par un pointeur ou par l'adresse d'un élément quelconque du tableau.

Exemple

Après les instructions,

   char CH[] = "Bonjour !";
   char *P;
   P = CH;

nous pouvons appeler la fonction strlen définie ci-dessus par:


strlen(CH)

/* résultat: 9 */

strlen(P)
/* résultat: 9 */

strlen(&CH[4])
/* résultat: 5 */

strlen(P+2)
/* résultat: 7 */

strlen(CH+2)
/* résultat: 7 */

Attention!

Dans les trois dernièrs appels, nous voyons qu'il est possible de fournir une partie d'un tableau à une fonction, en utilisant l'adresse d'un élément à l'intérieur de tableau comme paramètre.

Remarque pratique

Pour qu'une fonction puisse travailler correctement avec un tableau qui n'est pas du type char, il faut aussi fournir la dimension du tableau ou le nombre d'éléments à traiter comme paramètre, sinon la fonction risque de sortir du domaine du tableau.

Exemple

La fonction LIRETAB lit N données pour un tableau (unidimensionnel) du type int et les mémorise à partir de l'adresse indiquée par le pointeur PTAB. PTAB et N sont fournis comme paramètres.

void LIRE_TAB(int N, int *PTAB)
{
 printf("Entrez %d valeurs : \n", N);
 while(N)
   {
    scanf("%d", PTAB++);
    N--
   }
}

Dans l'appel de la fonction nous utilisons en général le nom du tableau:

   LIRE_TAB(4, T);

Nous obtenons alors les grilles suivantes:


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber