Bagaimana untuk Mengembalikan Array daripada Fungsi dalam C tanpa Kehilangan Data?

DDD
Lepaskan: 2024-10-29 20:18:29
asal
288 orang telah melayarinya

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

Mengembalikan Tatasusunan daripada Fungsi dalam C

Apabila mengembalikan tatasusunan daripada fungsi dalam C , adalah penting untuk memahami selok-belok pengurusan memori . Secara lalai, tatasusunan setempat yang diperuntukkan pada timbunan dalam fungsi dimusnahkan apabila fungsi keluar. Tingkah laku ini membawa kepada tingkah laku yang tidak ditentukan jika percubaan dibuat untuk mengakses tatasusunan ini di luar fungsi.

Dalam kod yang disediakan, tatasusunan c dicipta pada tindanan dalam fungsi uni:

<code class="c++">int c[10];</code>
Salin selepas log masuk

Walaupun tatasusunan ini berjaya diisi dengan nilai dalam fungsi, nilai itu hilang sebaik sahaja fungsi itu kembali dan tatasusunan dimusnahkan. Ini mengakibatkan output tidak dijangka yang anda hadapi.

Untuk mengatasi isu ini, anda boleh menggunakan dua pendekatan alternatif:

Menggunakan Penunjuk:

Ubah suai fungsi uni untuk mengembalikan penuding kepada tatasusunan yang diperuntukkan:

<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>
Salin selepas log masuk

Secara utama, anda harus bertanggungjawab untuk menyamakan kedudukan memori yang diperuntukkan dalam timbunan:

<code class="c++">int main()
{
    // ...same code as before...
    delete[] c; // Deallocate array from heap
    // ...
}</code>
Salin selepas log masuk

Menggunakan a Struct:

Pendekatan lain melibatkan membungkus tatasusunan dalam struct dan mengembalikan struct:

<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>
Salin selepas log masuk

Dalam kes ini, struct dikembalikan mengikut nilai, memastikan salinan tatasusunan dibuat dalam fungsi utama. Nilai pulangan struktur boleh disalin dengan cekap disebabkan oleh nilai semantik struct.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Array daripada Fungsi dalam C tanpa Kehilangan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!