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

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

DDD
DDDoriginal
2024-10-29 20:18:29364parcourir

 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>

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>

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>

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>

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!

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