Comment passer des tableaux aux fonctions en C++ : Guide pratique
Comment passer des tableaux aux fonctions en C++
Ce guide explique comment passer des tableaux uni- et multi-dimensionnels aux fonctions en C++ en utilisant de vrais exemples de code.
En C++, les tableaux peuvent être fournis comme arguments de fonction, et vous pouvez même les retourner indirectement via des pointeurs. Comprendre la mécanique derrière la dégradation des tableaux en pointeurs et l'impact sur la mémoire et la performance est essentiel pour écrire du code efficace.
Syntaxe pour passer des tableaux comme paramètres de fonction
La déclaration pour une fonction qui accepte un tableau ressemble à ceci :
typeRetour nomFonction(typeDonnees nomTableau[tailleTableau]) {
// corps de la fonction
}
Exemple :
int total(int notes[5]) {
// implémentation
}
Ici, notes est un tableau int de cinq éléments. Quand la fonction est appelée, seul le nom du tableau (un pointeur vers son premier élément) est passé.
Exemple 1 : Passage d'un tableau unidimensionnel à une fonction
#include <iostream>
using namespace std;
// Déclarer la fonction pour afficher les notes
void afficher(int m[5]) {
cout << "Affichage des notes:" << endl;
for (int i = 0; i < 5; ++i) {
cout << "Étudiant " << i + 1 << ": " << m[i] << endl;
}
}
int main() {
int notes[5] = {88, 76, 90, 61, 69};
afficher(notes); // Passer le tableau par son nom
return 0;
}
Sortie
Affichage des notes: Étudiant 1: 88 Étudiant 2: 76 Étudiant 3: 90 Étudiant 4: 61 Étudiant 5: 69
Points clés :
- L'appel
afficher(notes);passe l'adresse denotes[0]. - À l'intérieur de la fonction,
int m[5]est traité commeint* m;, pointant vers la même mémoire. - Modifier
m[i]change le tableau originalnotes, illustrant la sémantique de passage par référence.
Passage d'un tableau multidimensionnel à une fonction
Pour les tableaux 2-D, vous devez spécifier le nombre de colonnes (la taille de la seconde dimension) pour que le compilateur puisse calculer les décalages d'éléments.
Exemple 2 : Passage d'un tableau bidimensionnel à une fonction
#include <iostream>
using namespace std;
void afficher(int n[][2]) {
cout << "Affichage des valeurs:" << endl;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl;
}
}
}
int main() {
int num[3][2] = {{3, 4}, {9, 5}, {7, 1}};
afficher(num);
return 0;
}
Sortie
Affichage des valeurs: num[0][0]: 3 num[0][1]: 4 num[1][0]: 9 num[1][1]: 5 num[2][0]: 7 num[2][1]: 1
Notes :
- Le nombre de lignes (3) est optionnel car le compilateur peut l'inférer depuis la définition du tableau.
- Spécifier la taille des colonnes (
[][2]) est obligatoire pour l'arithmétique de pointeurs correcte.
Les tableaux de dimensions supérieures suivent la même règle : la taille de toutes les dimensions sauf la première doit être spécifiée.
Retourner un tableau depuis une fonction
Les fonctions ne peuvent pas retourner un tableau entier directement. Au lieu de cela, elles retournent un pointeur vers le premier élément, qui peut faire référence à un tableau alloué statiquement, un tableau dynamique, ou un objet temporaire. Il faut faire attention d'éviter de retourner des pointeurs vers des tableaux locaux (pile), ce qui résulterait en références pendantes.
Exemple (tableau statique) :
int* obtenirTableau() {
static int arr[5] = {1, 2, 3, 4, 5};
return arr; // pointeur vers le premier élément
}
Pour l'allocation dynamique, considérez retourner un std::vector<T> pour la sécurité et la gestion automatique de la mémoire.
Une lecture approfondie sur la gestion sûre des tableaux en C++ est recommandée pour le code de production.
Langue C
- Maîtriser les tableaux en escalier C# : Déclaration, initialisation et accès
- Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
- Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
- Maîtriser les opérateurs en programmation C : Guide complet
- Les tableaux en C++ : Déclaration, initialisation et techniques avec pointeurs
- Maîtriser l'allocation de tableaux dynamiques en C++ : Guide pratique avec exemples de code
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- Maîtriser la programmation C : Tutoriel complet pour débutants