Retourner le pointeur vers le tableau en C++

  1. Utilisez la notation int var[n] pour passer l’argument tableau à la fonction et ensuite retourner en C++
  2. 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 <iostream>
#include <array>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::array;

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 <iostream>
#include <array>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::array;

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 ]

Article connexe - C++ Array

  • Comment passer d'un tableau en 2D à une fonction en C++