Maison > développement back-end > C++ > le corps du texte

Comment renvoyer un tableau à partir d'une fonction en C sans perdre de données ?

DDD
Libérer: 2024-10-29 20:18:29
original
288 Les gens l'ont consulté

 How to Return an Array from a Function in C   without Losing Data?

Renvoi de tableaux à partir d'une fonction en C

Lors du retour d'un tableau à partir d'une fonction en C, il est essentiel de comprendre les subtilités de la gestion de la mémoire . Par défaut, les tableaux locaux alloués sur la pile au sein de la fonction sont détruits à la sortie de la fonction. Ce comportement conduit à un comportement indéfini si des tentatives sont faites pour accéder à ces tableaux en dehors de la fonction.

Dans le code fourni, un tableau c est créé sur la pile au sein de la fonction uni :

<code class="c++">int c[10];</code>
Copier après la connexion

Bien que ce tableau soit rempli avec succès avec les valeurs de la fonction, les valeurs sont perdues une fois la fonction renvoyée et le tableau est détruit. Cela entraîne le résultat inattendu que vous rencontrez.

Pour surmonter ce problème, vous pouvez adopter deux approches alternatives :

À l'aide d'un pointeur :

Modifier la fonction uni pour renvoyer un pointeur vers le tableau alloué :

<code class="c++">int* uni(int *a,int *b)
{
    int* c = new int[10]; // Allocate array on heap
    int i = 0;
    // ...same code as before...
    return c;
}</code>
Copier après la connexion

En principal, vous devriez être responsable de la désallocation de la mémoire allouée dans le tas :

<code class="c++">int main()
{
    // ...same code as before...
    delete[] c; // Deallocate array from heap
    // ...
}</code>
Copier après la connexion

Utiliser a Struct :

Une autre approche consiste à envelopper le tableau dans une structure et à renvoyer la structure :

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

myArray uni(int *a,int *b)
{
    myArray c;
    int i = 0;
    // ...same code as before...
    return c;
}</code>
Copier après la connexion

Dans ce cas, la structure est renvoyée par valeur, garantissant une copie de le tableau est créé dans la fonction principale. Les valeurs de retour des structures peuvent être copiées efficacement en raison de la sémantique des valeurs des structures.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!