Maison >développement back-end >C++ >Comment renvoyer un tableau à partir d'une fonction en C ?

Comment renvoyer un tableau à partir d'une fonction en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 08:05:30536parcourir

How to Return an Array from a Function in C  ?

Renvoi de tableaux à partir d'une fonction en C

Vous pouvez renvoyer un tableau à partir d'une fonction en C en utilisant des pointeurs. Cependant, cela peut entraîner des problèmes si le tableau n'est pas correctement alloué.

Dans votre exemple, vous essayez de renvoyer un tableau alloué sur la pile. Cela peut provoquer un comportement indéfini lors du retour de la fonction.

Pour éviter ce problème, vous pouvez allouer le tableau sur le tas à l'aide de l'opérateur new. Vous pouvez ensuite renvoyer un pointeur vers le tableau alloué.

<code class="C++">int* uni(int *a, int *b) {
    int *c = new int[10];
    int i = 0;
    while (a[i] != -1) {
        c[i] = a[i];
        i++;
    }
    for (; i < 10; i++) {
        c[i] = b[i - 5];
    }
    return c;
}</code>

Vous pouvez ensuite utiliser le pointeur renvoyé pour accéder au tableau.

<code class="C++">int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    int *c = uni(a, b);
    for (int i = 0; i < 10; i++) {
        cout << c[i] << " ";
    }
    cout << "\n";
    delete[] c;
    return 0;
}</code>

Cela affichera :

1 3 3 8 4 1 3 4 3 0

Une autre alternative consiste à utiliser une structure pour envelopper le tableau. Cela peut être renvoyé par valeur, et la structure sera copiée, y compris le tableau qui y est interne.

<code class="C++">struct myArray {
    int array[10];
};

myArray uni(int *a, int *b) {
    myArray c;
    int i = 0;
    while (a[i] != -1) {
        c.array[i] = a[i];
        i++;
    }
    for (; i < 10; i++) {
        c.array[i] = b[i - 5];
    }
    return c;
}

int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    myArray c = uni(a, b);
    for (int i = 0; i < 10; i++) {
        cout << c.array[i] << " ";
    }
    cout << "\n";
    return 0;
}</code>

Cela affichera également :

1 3 3 8 4 1 3 4 3 0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn