Passage des tableaux en tant qu'arguments de fonction en C

Salut là, future star du codage ! ? Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des tableaux et des fonctions en C. En tant que votre professeur de science informatique du coin, je suis là pour vous guider à travers cette aventure étape par étape. Alors, attrapez votre sac à dos virtuel, et plongeons dedans !

C - Passing Arrays to Function

Comprendre les tableaux et les fonctions

Avant de sauter dans la passerelle des tableaux aux fonctions, réapons rapidement notre mémoire sur ce que sont les tableaux et les fonctions.

Qu'est-ce qu'un tableau ?

Pensez à un tableau comme une rangée de casiers dans un couloir d'école. Chaque casier (élément) a un numéro (index) et peut contenir quelque chose à l'intérieur. En C, nous utilisons des tableaux pour stocker plusieurs éléments du même type dans une seule variable.

Qu'est-ce qu'une fonction ?

Une fonction est comme un mini-programme dans notre programme principal. C'est un ensemble d'instructions qui effectue une tâche spécifique. Pensez-y comme une fiche de recette dans un livre de cuisine - vous pouvez l'utiliser chaque fois que vous avez besoin d'effectuer cette tâche particulière.

Maintenant que nous avons couvert les bases, explorons comment nous pouvons combiner ces deux concepts !

Passage des tableaux en tant qu'arguments de fonction

En C, nous pouvons passer des tableaux à des fonctions de différentes manières. Jetons un œil à chaque méthode une par une.

1. Passer un tableau avec la méthode de passage par valeur

En C, lorsque nous passons un tableau à une fonction, nous passons en réalité l'adresse du premier élément du tableau. Cela signifie que toute modification apportée au tableau à l'intérieur de la fonction affectera le tableau original.

Voici un exemple :

#include <stdio.h>

void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("Tableau original : ");
printArray(myArray, size);

return 0;
}

Dans cet exemple, nous passons myArray à la fonction printArray. Même si cela semble que nous passons le tableau entier, nous passons en réalité un pointeur vers le premier élément.

Sortie :

Tableau original : 1 2 3 4 5

2. Passer un tableau par référence

En C, les tableaux sont toujours passés par référence. Cela signifie que lorsque vous passez un tableau à une fonction, vous passez en réalité un pointeur vers le premier élément du tableau.

Voyons un exemple où nous modifions le tableau à l'intérieur de la fonction :

#include <stdio.h>

void doubleElements(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("Tableau original : ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

doubleElements(myArray, size);

printf("Tableau modifié : ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

return 0;
}

Dans cet exemple, la fonction doubleElements modifie le tableau original en doublant chaque élément.

Sortie :

Tableau original : 1 2 3 4 5
Tableau modifié : 2 4 6 8 10

3. Passer un tableau bidimensionnel à une fonction

Maintenant, levons le niveau et parlons de la passing d'un tableau 2D à une fonction. C'est comme passer une feuille de calcul entière au lieu d'une seule rangée !

Voici un exemple :

#include <stdio.h>

void print2DArray(int rows, int cols, int arr[rows][cols]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}

int main() {
int myArray[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

printf("Mon tableau 2D :\n");
print2DArray(3, 3, myArray);

return 0;
}

Dans cet exemple, nous passons un tableau 2D à la fonction print2DArray. Notez comment nous spécifions les dimensions dans le paramètre de la fonction.

Sortie :

Mon tableau 2D :
1 2 3
4 5 6
7 8 9

4. Fonction pour comparer les longueurs de chaînes

Pour finir, regardons comment nous pouvons passer des chaînes (qui sont essentiellement des tableaux de caractères) à des fonctions. Nous allons créer une fonction qui compare les longueurs de deux chaînes.

#include <stdio.h>
#include <string.h>

int compareStringLengths(char str1[], char str2[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);

if (len1 > len2) return 1;
if (len1 < len2) return -1;
return 0;
}

int main() {
char string1[] = "Hello";
char string2[] = "World!";

int result = compareStringLengths(string1, string2);

if (result > 0) {
printf("%s est plus long que %s\n", string1, string2);
} else if (result < 0) {
printf("%s est plus long que %s\n", string2, string1);
} else {
printf("%s et %s ont la même longueur\n", string1, string2);
}

return 0;
}

Dans cet exemple, nous passons deux chaînes à la fonction compareStringLengths, qui renvoie 1 si la première chaîne est plus longue, -1 si la deuxième chaîne est plus longue, et 0 si elles ont la même longueur.

Sortie :

World! est plus long que Hello

Conclusion

Félicitations ! Vous venez de monter en compétences en programmation C en apprenant à passer des tableaux aux fonctions. Souvenez-vous, la pratique rend parfait, donc n'hésitez pas à expérimenter avec ces concepts dans vos propres programmes.

Voici un tableau de réference rapide des méthodes que nous avons couvertes :

Méthode Description
Passer un tableau par valeur Passe l'adresse du premier élément
Passer un tableau par référence Toujours passé par référence en C
Passer un tableau 2D Nécessite de spécifier les dimensions dans le paramètre de la fonction
Passer des chaînes Peut être utilisé pour manipuler ou comparer des chaînes

Continuez à coder, continuez à apprendre, et surtout, continuez à vous amuser ! ??

Credits: Image by storyset