Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Comment passer des tableaux 1D et 2D aux fonctions en C – Guide pratique

Comment passer des tableaux 1D et 2D aux fonctions en C

Ce tutoriel explique comment passer des tableaux entiers — à une dimension et multidimensionnels — aux fonctions en C, avec des exemples de code clairs et des conseils de bonnes pratiques.

En C, le nom d'un tableau se transforme en pointeur lorsqu'il est passé à une fonction, ce qui permet à la fonction d'opérer sur les données originales sans les copier. Comprendre ce comportement est essentiel pour écrire du code efficace et maintenable.


Passage d'éléments individuels d'un tableau

Passer un seul élément revient à passer n'importe quel type primitif.

Exemple 1 : Passage d'éléments individuels

#include <stdio.h>
void display(int age1, int age2) {
    printf("%d\n", age1);
    printf("%d\n", age2);
}
int main() {
    int ageArray[] = {2, 8, 4, 12};
    // Passage du deuxième et troisième éléments à display()
    display(ageArray[1], ageArray[2]);
    return 0;
}

Sortie

8
4

Ici, nous passons ageArray[1] et ageArray[2] comme des variables ordinaires. La fonction les reçoit par valeur, donc le tableau original reste inchangé.


Passage de tableaux unidimensionnels entiers

Pour transmettre un tableau entier à une fonction, il suffit de fournir son nom. Le prototype de la fonction doit indiquer un paramètre de type tableau, mais la taille réelle peut être omise. Le compilateur traite le paramètre comme un pointeur vers le premier élément.

Exemple 2 : Calcul de la somme d'un tableau

#include <stdio.h>
float calculateSum(float num[]);
int main() {
    float result, num[] = {23.4, 55, 22.6, 3, 40.5, 18};
    // Passage du tableau entier à calculateSum()
    result = calculateSum(num);
    printf("Résultat = %.2f", result);
    return 0;
}
float calculateSum(float num[]) {
    float sum = 0.0;
    for (int i = 0; i < 6; ++i) {
        sum += num[i];
    }
    return sum;
}

Sortie

Résultat = 162.50

La signature float calculateSum(float num[]) indique au compilateur que num est un pointeur vers un tableau de float. La boucle traite le tableau sur place sans copie.


Passage de tableaux multidimensionnels

Les tableaux multidimensionnels suivent le même principe : le nom du tableau se transforme en pointeur vers la première ligne. Cependant, le compilateur doit connaître la taille de toutes les dimensions sauf la première. C'est nécessaire pour calculer les décalages mémoire corrects.

Exemple 3 : Passage d'un tableau bidimensionnel

#include <stdio.h>
void displayNumbers(int num[2][2]);
int main() {
    int num[2][2];
    printf("Entrez 4 nombres :\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            scanf("%d", &num[i][j]);
        }
    }
    // Passage du tableau bidimensionnel à une fonction
    displayNumbers(num);
    return 0;
}
void displayNumbers(int num[2][2]) {
    printf("Affichage :\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d\n", num[i][j]);
        }
    }
}

Sortie

Entrez 4 nombres : 2 3 4 5
Affichage :
2
3
4
5

Le prototype void displayNumbers(int num[2][2]) déclare un tableau d'entiers 2×2. Lors de l'appel, on passe simplement num ; le compilateur gère automatiquement la conversion en pointeur.

Notez que vous pouvez omettre la dimension des lignes mais devez spécifier la taille des colonnes : int num[][2] est valide, tandis que la taille des colonnes est essentielle pour le calcul d'adresse.


Important : C permet de passer des tableaux aux fonctions, mais ne supporte pas le retour direct de tableaux depuis les fonctions. Utilisez des pointeurs ou des structures si vous devez retourner des données complexes.

Langue C

  1. Maîtriser les tableaux C# : Déclaration, initialisation et opérations
  2. Types de données en C expliqués : int, float, char et plus — Guide complet
  3. Maîtriser l'instruction pass en Python : Guide pratique
  4. Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
  5. Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
  6. Utilisation efficace de la mémoire avec les champs de bits en C
  7. Maîtriser les entrées/sorties fichiers en C : Création, ouverture et gestion
  8. Maîtriser les arguments variables en C : Guide pratique
  9. Comprendre le polymorphisme en C++ : Guide pratique