Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melepasi Tatasusunan melalui Rujukan dalam C untuk Mengelakkan Menyalin?

Bagaimanakah Saya Boleh Melepasi Tatasusunan melalui Rujukan dalam C untuk Mengelakkan Menyalin?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 13:05:17319semak imbas

How Can I Pass an Array by Reference in C   to Avoid Copying?

Melalui Tatasusunan melalui Rujukan dalam C

Melalui tatasusunan melalui rujukan membolehkan anda mengakses tatasusunan asal dalam fungsi tanpa perlu menyalin ia. Dalam C , anda boleh menggunakan operator & untuk menghantar tatasusunan melalui rujukan.

Pertimbangkan coretan kod berikut:

void foo(int (&myArray)[100])
{
    // Access and manipulate the elements of myArray here
}

int main()
{
    int a[100];
    foo(a);
}

Dalam contoh ini, fungsi foo mengambil tatasusunan 100 integer sebagai rujukan. Sintaks (&myArray)[100] menentukan bahawa myArray sedang dihantar melalui rujukan dan ia adalah tatasusunan 100 integer.

Pengendali (&) digunakan untuk mendapatkan alamat tatasusunan. Tanda kurung diperlukan untuk menyahkekaburan ungkapan: operator & mempunyai keutamaan yang lebih tinggi daripada operator [], jadi &myArray[100] akan merujuk kepada alamat elemen ke-100 tatasusunan, bukan kepada alamat tatasusunan itu sendiri.

Melalukan tatasusunan melalui rujukan dan bukannya mengikut nilai adalah berfaedah kerana ia mengelakkan overhed menyalin keseluruhan tatasusunan ke dalam fungsi. Ini amat penting untuk tatasusunan besar, kerana ia boleh meningkatkan prestasi dengan ketara.

Perhatikan bahawa sintaks (&myArray)[100] hanya menerima tatasusunan 100 integer. Jika anda ingin menghantar tatasusunan dengan saiz yang berbeza, anda boleh menggunakan sintaks (&myArray), yang menerima tatasusunan dalam sebarang saiz. Walau bagaimanapun, menggunakan sintaks ini bermakna anda tidak boleh menggunakan sizeof pada myArray dalam fungsi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Tatasusunan melalui Rujukan dalam C untuk Mengelakkan Menyalin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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