Retourner le pointeur vers le tableau en C++
-
Utilisez la notation
int var[n]
pour passer l’argument tableau à la fonction et ensuite retourner en C++ -
Utilisez la notation
int* var
pour passer l’argument Array à la fonction et revenir ensuite en C++
Cet article explique plusieurs méthodes pour renvoyer un pointeur vers un tableau dans une fonction en C++.
Utilisez la notation int var[n]
pour passer l’argument tableau à la fonction et ensuite retourner en C++
Comme la fonction doit renvoyer la valeur du pointeur, nous supposerons que le tableau est de longueur fixe. Alternativement, si nous devons passer un tableau dynamique - std::vector
à une fonction, il est préférable d’utiliser des références.
L’exemple suivant montre la fonction subtructArray
qui soustrait chaque valeur dans le array
étant donné la valeur du subtrahend. Le tableau est déclaré comme un tableau brut de style C, ce qui est surtout utile pour travailler avec des pointeurs. Le tableau est passé avec la notation int arr[]
du paramètre, mais il est converti en dessous par le compilateur comme pointeur vers le tableau et nous pouvons le traiter comme tel dans le corps de la fonction. Enfin, il renvoie la valeur du pointeur directement en utilisant le nom de la variable sans prendre son adresse avec l’opérateur &
.
Les éléments soustraits du tableau sont envoyés à la console, et après avoir envoyé le dernier élément, il y a l’instruction cout
qui inclut b
dans la chaîne de caractères littérale. Cette séquence d’échappement signifie que le comportement de la touche retour arrière est émulé, ce qui supprime les deux derniers caractères de la sortie de la console.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int *subtructArray(int arr[], int size, int subtrahend) {
for (int i = 0; i < size; ++i) {
arr[i] -= subtrahend;
}
return arr;
}
constexpr int SIZE = 10;
int main() {
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int num = 15;
int *ptr = subtructArray(c_array, SIZE, num);
cout << "array1 = [ ";
for (int i = 0; i < SIZE; ++i) {
cout << ptr[i] << ", ";
}
cout << "\b\b ]" << endl;
return EXIT_SUCCESS;
}
Production :
array1 = [ -14, -13, -12, -11, -10, -9, -8, -7, -6, -5 ]
Utilisez la notation int* var
pour passer l’argument Array à la fonction et revenir ensuite en C++
Une autre méthode pour passer le tableau de taille fixe est de déclarer un paramètre de fonction avec la notation int* var
et de retourner la valeur du pointeur après que le corps de la fonction ait fini de le traiter. Notez que l’exemple de code suivant utilise le conteneur std::array
et appelle la méthode data()
pour récupérer le pointeur où les éléments du tableau sont stockés. L’instruction return
prend le nom de la variable comme dans la méthode précédente.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int *subtructArray(int *arr, int size, int subtrahend) {
for (int i = 0; i < size; ++i) {
arr[i] -= subtrahend;
}
return arr;
}
constexpr int SIZE = 10;
int main() {
array<int, SIZE> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int num = 15;
int *ptr2 = subtructArray(arr1.data(), arr1.size(), num);
cout << "array2 = [ ";
for (int i = 0; i < SIZE; ++i) {
cout << ptr2[i] << ", ";
}
cout << "\b\b ]" << endl;
return EXIT_SUCCESS;
}
Production :
array1 = [ -14, -13, -12, -11, -10, -9, -8, -7, -6, -5 ]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook