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
Libérer: 2024-10-29 08:05:30
original
539 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

Cela affichera :

1 3 3 8 4 1 3 4 3 0
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion

Cela affichera également :

1 3 3 8 4 1 3 4 3 0
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal