Contenu du cours
Fonctions C++
Fonctions C++
Passer un Tableau Statique comme Argument de la Fonction
En C++, un tableau statique est un tableau dont la taille est déterminée à la compilation et reste constante pendant l'exécution du programme.
Comme pour les valeurs de types de données simples, nous pouvons passer des tableaux comme arguments de fonction !
Passer un tableau à une dimension comme argument
Pour passer un tableau à une dimension en tant qu'argument de la fonction, nous devons utiliser les crochets []
après le nom de la variable dans la signature de la fonction :
main
#include <iostream> // Function to process a 1-dimensional static array void processArray(int arr[], const int size) { for (int i = 0; i < size; ++i) std::cout << arr[i] << " "; // Print each element of the array std::cout << std::endl; } int main() { const int SIZE = 5; int oneDimArray[SIZE] = {1, 2, 3, 4, 5}; // Initialize a 1-dimensional static array std::cout << "Original Array: "; processArray(oneDimArray, SIZE); // Call the function to process the array }
Passer un tableau à deux dimensions comme argument
Passer un tableau à deux dimensions est très similaire au passage d'un tableau à une dimension : nous devons utiliser le [][]
après le nom de la variable.
Mais il y a une différence importante : en C++, vous ne pouvez pas passer directement un tableau 2D en utilisant la syntaxe datatype arrayName[][]
comme argument de fonction.
Lorsque vous passez un tableau 2D à une fonction, vous devez spécifier la taille d’au moins une dimension de tableau à l'intérieur des crochets [][]
. Ceci est nécessaire car C++ requiert de connaître la taille de la dimension afin de calculer correctement les décalages mémoire lors de l'accès aux éléments du tableau.
main
#include <iostream> // Function to process a 2D array with a specific number of rows void processMatrix(int matrix[][3], const int rows) { // Iterate through each row for (int i = 0; i < rows; ++i) { // Iterate through each column (assuming 3 columns in this case) for (int j = 0; j < 3; ++j) { std::cout << matrix[i][j] << " "; // Print each element of the matrix } std::cout << std::endl; // Move to the next line after processing each row } } int main() { const int ROWS = 2; // Number of rows in the 2D array int twoDimArray[ROWS][3] = {{1, 2, 3}, {4, 5, 6}}; // Initialize a 2D array std::cout << "Original Matrix:" << std::endl; processMatrix(twoDimArray, ROWS); // Call the function to process the matrix, passing the number of rows }
Puisque nous devons spécifier au moins une des dimensions du tableau (peu importe laquelle), la signature de cette fonction peut également ressembler à ceci:
Spécifiez uniquement le nombre de lignes
ou
Spécifiez à la fois le nombre de lignes et de colonnes
Lorsque nous appelons la fonction à l'intérieur du bloc main()
, nous utilisons le nom d'un tableau comme argument sans aucun opérateur supplémentaire.
Merci pour vos commentaires !