using arrays with functions c
Tout ce que vous devez savoir sur les tableaux avec des fonctions en C ++:
Dans ce didacticiel, nous verrons comment les tableaux peuvent être utilisés avec des fonctions en C ++. Généralement, les tableaux peuvent être passés aux fonctions en tant qu'arguments de la même manière que nous passons les variables aux fonctions.
Mais l'évaluation des paramètres formels est légèrement différente en ce qui concerne les tableaux. Avant d'explorer réellement le passage de tableaux à des fonctions, nous devons discuter brièvement du concept de pointeur vers un tableau.
=> Consultez les didacticiels de formation approfondie sur le C ++ ici.
Ce que vous apprendrez:
- Pointeur vers un tableau
- Passer des tableaux à une fonction
- Renvoi de tableaux à partir de fonctions
- Conclusion
- lecture recommandée
Pointeur vers un tableau
Considérez le tableau suivant contenant les cinq premiers nombres de la séquence de Fibonacci.
int fibSeq(5) = {1,1,2,3,5};
Déclarons un pointeur fibPtr pour pointer ce tableau.
int* fibPtr; fibPtr = fibSeq;
Lorsque nous imprimons le contenu de fibPtr, la sortie sera le premier élément du tableau fibSeq. Cela est dû au fait que le nom du tableau sans crochets correspond à un pointeur vers le premier élément du tableau. Ainsi dans l'exemple ci-dessus, le nom «fibSeq» pointe vers le premier élément du tableau «fibSeq».
Voici une représentation picturale de la même chose:
Comme le montre la représentation illustrée ci-dessus, fibPtr pointe vers le premier élément du tableau. Ainsi, en utilisant l'arithmétique du pointeur, nous pouvons imprimer tous les éléments du tableau en utilisant simplement fibPtr.
Par exemple, expression * (fibPtr + 1) pointera vers le deuxième élément du tableau et ainsi de suite.
meilleur gestionnaire de tâches pour windows 10
Mettons ceci dans un programme et vérifions la sortie de «fibSeq» et «fibPtr»:
#include #include using namespace std; int main() { int fibSeq(5) = {1,1,2,3,5}; int* fibPtr; fibPtr = fibSeq; cout<<'
fibSeq points to :'<<*fibSeq; cout<<'
fibSeq(0): '<<*fibPtr; cout<<'
fibSeq(1): '<<*(fibPtr + 1); cout<<'
fibSeq(2): '<<*(fibPtr + 2); cout<<'
fibSeq(3): '<<*(fibPtr + 3); cout<<'
fibSeq(4): '<<*(fibPtr + 4); } }
Production:
fibSeq indique: 1
fibSeq (0): 1
fibSeq (1): 1
fibSeq (2): 2
fibSeq (3): 3
fibSeq (4): 5
Dans l'exemple ci-dessus, nous déclarons une variable de pointeur fibPtr, puis la faisons pointer le tableau en affectant le nom du tableau à fibPtr. Lorsque nous faisons cela, nous faisons pointer le fibPtr sur le premier élément du tableau. Ensuite, nous imprimons toutes les valeurs d'un tableau en utilisant fibPtr.
Passer des tableaux à une fonction
Lorsque nous avons affaire à des fonctions, nous passons des tableaux à la fonction de la même manière que nous passons des variables à function. Mais on ne passe pas la variable tableau de type ().
Au lieu de cela, nous passons le pointeur vers le tableau, c'est-à-dire le nom du tableau qui pointe vers le premier élément du tableau. Ensuite, le paramètre formel qui accepte ce pointeur est en fait une variable de tableau. Au fur et à mesure que nous passons le pointeur, nous pouvons directement modifier le tableau à l'intérieur de la fonction.
Considérez le programme suivant qui calcule le carré de chaque élément des cinq premiers éléments de la séquence de Fibonacci pour démontrer le passage d'un tableau à une fonction.
#include #include using namespace std; void fibSeqSquare(int fibSeq()) { for(int i=0;i<5;i++) { fibSeq(i) *= fibSeq(i); } } int main() { int fibSeq(5) = {1,1,2,3,5}; fibSeqSquare(fibSeq); for(int i=0;i<5;i++) { cout<Dans l'exemple ci-dessus, nous calculons le carré de chaque élément dans une séquence de Fibonacci. Ce carré est calculé à l'intérieur d'une fonction. Par conséquent, nous passons le nom du tableau à la fonction «fibSeqSquare» en appelant la fonction depuis main. À l'intérieur de la fonction, nous calculons les carrés de chaque élément.
Comme nous avons passé la référence au tableau par le biais d'un pointeur, quelles que soient les modifications que nous apportons au tableau à l'intérieur de la fonction, refléteront le tableau. Par conséquent, lorsque nous imprimons le tableau dans la fonction principale, nous obtenons les carrés de chaque élément comme sortie.
Dans l'exemple ci-dessus, nous avons vu que l'argument tableau (paramètre formel) de la fonction fibSeqSquare ne spécifie pas la taille du tableau mais juste les crochets (()) pour indiquer qu'il s'agit d'un tableau. C'est une façon de spécifier les arguments du tableau.
Une autre façon de spécifier l'argument tableau dans la liste de paramètres formels consiste à spécifier la taille du tableau entre crochets. Les deux arguments fonctionnent de la même manière. Ce sont simplement les deux façons dont nous spécifions les arguments du tableau.
L'exemple suivant montre un argument Array spécifié avec size.
#include #include using namespace std; void displayFibSeq(int fibSeq(5)) { for(int i=0;i<5;i++) { cout<L'exemple ci-dessus a une fonction pour afficher la séquence de Fibonacci. La fonction a un paramètre en tant que tableau dans lequel nous avons également spécifié la taille du tableau.
Nous pouvons également passer des tableaux multidimensionnels aux fonctions de la même manière que celle indiquée ci-dessus.
comment attraper les bogues lors de l'automatisation de la construction
Renvoi de tableaux à partir de fonctions
Quand il s'agit de renvoyer un tableau à partir d'une fonction, C ++ ne nous permet pas de renvoyer un tableau entier à partir de la fonction. Cependant, nous pouvons créer une fonction pour renvoyer un pointeur vers le tableau. Mais il y a un hic.
Considérez le morceau de code suivant:
int* funcArray() { int arr(3) = {1,2,3}; return arr; } int main() { int* aryPtr = funcArray(); cout< Bien que le programme ci-dessus renvoie simplement le pointeur vers le premier élément d'un tableau à partir de la fonction, il ne fonctionne pas comme prévu. Nous ne pouvons pas garantir que le programme nous donnera la sortie correcte. Il peut ou non donner la sortie correcte.
En effet, nous renvoyons la variable locale à partir de function et nous ne savons pas si elle sera dans la portée au moment où elle sera renvoyée ou non.
Ainsi, en un mot, C ++ ne favorise pas le retour de tableaux à partir de fonctions.
Si nous devons renvoyer des tableaux à partir de la fonction, nous devons utiliser l'une des méthodes suivantes:
# 1) Renvoyer des tableaux alloués dynamiquement
Nous pouvons renvoyer le pointeur de tableau à partir du tableau alloué dynamiquement. Nous utilisons l'opérateur «new» pour allouer dynamiquement le tableau. Comme il s'agit d'un tableau dynamique, il sera dans la portée à moins que nous ne 'supprimions' le tableau. Par conséquent, le programme fonctionnera correctement lorsque nous renvoyons le tableau.
Ceci est illustré dans l'exemple suivant.
#include #include using namespace std; int* funcArray() { int* arr = new int(3); arr(0)=1; arr(1)=2; arr(2)=3; return arr; } int main() { int* aryPtr = funcArray(); cout< Production:
1 2 3
# 2) Retour de tableaux statiques
Comme les variables / tableaux statiques ont une portée dans tout le programme, nous pouvons également renvoyer des tableaux statiques à partir de fonctions. Nous pouvons prendre un exemple pour le démontrer. C'est le même que l'exemple précédent avec la seule différence que dans cet exemple, nous avons utilisé un tableau statique au lieu du tableau alloué dynamiquement.
#include #include using namespace std; int* funcArray() { static int arr(3); arr(0)=1; arr(1)=2; arr(2)=3; return arr; } int main() { int* aryPtr = funcArray(); cout< Production:
1 2 3
Remarque : Nous pouvons également utiliser une structure pour envelopper le tableau à l'intérieur, puis renvoyer cette structure. De cette façon, nous retournerons naturellement un tableau à partir d'une fonction. Mais ce n'est pas une méthode très faisable pour renvoyer des tableaux.
meilleurs serveurs privés world of warcraft
Conclusion
Ainsi, dans ce tutoriel, nous avons discuté en détail des tableaux par rapport aux fonctions. Nous espérons que ce tutoriel aurait aidé à dissiper tous les doutes et les idées fausses sur les tableaux et les fonctions C ++.
=> Consultez le guide de formation Perfect C ++ ici.
lecture recommandée