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 !
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