Tableaux et fonctions
Fait partie de la section Fondamentaux du Journey C++ de Coddy — leçon 62 sur 74.
Les tableaux ne peuvent pas être passés directement aux fonctions en tant que tableaux complets. Lorsque vous essayez de passer un tableau à une fonction, il se « dégrade » en un pointeur vers son premier élément.
Par exemple :
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) ne vous donnera pas la taille réelle du tableau. arr est en fait un pointeur ici, pas un tableau. Les pointeurs seront abordés dans le prochain cours.
C'est pourquoi, lors du passage de tableaux à des fonctions, nous devons généralement passer la taille en tant que paramètre distinct :
void processArray(int arr[], int size) {
// Nous pouvons maintenant travailler en toute sécurité avec le tableau en utilisant le paramètre de taille
}Voici comment appeler la fonction :
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);De plus, il n'est pas possible de retourner un tableau dans une fonction :
int[] processArray(int arr[]) {
return arr;
}Ceci est illégal. Au lieu de cela, vous devriez utiliser la syntaxe * :
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);La syntaxe de l'astérisque (*) fait référence aux pointeurs qui seront abordés dans le prochain cours.
Aide-mémoire
Les tableaux ne peuvent pas être passés directement aux fonctions - ils se « dégradent » en pointeurs vers leur premier élément.
Lors du passage de tableaux à des fonctions, vous devez passer la taille en tant que paramètre distinct :
void processArray(int arr[], int size) {
// Travailler avec le tableau en utilisant le paramètre de taille
}
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Les tableaux ne peuvent pas être retournés directement par des fonctions. Utilisez plutôt la syntaxe des pointeurs :
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloIncrémentation / DécrémentationPost-incrémentation / Post-décrémentationRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Bases des entrées/sorties
Instruction coutInstruction cinSaisie de chaînes de caractèresRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux3Variables - Partie 2
Déclaration de typeConventions de nommageRécapitulatif - Initialisation des variablesType Casting - Partie 1Type Casting - Partie 26Prise de décision
L'instruction IfIf - ElseL'instruction SwitchOpérateur conditionnelRécapitulatif - If ElseIf - Else imbriqués