Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?

Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?

PHPz
PHPzasal
2024-04-19 21:06:02675semak imbas

Fungsi C++ mempunyai dua gelagat apabila mengembalikan tatasusunan: salinan dikembalikan mengikut nilai, dan perubahan pada salinan tidak menjejaskan tatasusunan asal rujukan kepada tatasusunan asal dikembalikan melalui rujukan, dan perubahan kepada tatasusunan yang dikembalikan secara langsung dalam tatasusunan asal.

C++ 函数返回数组时有什么区别?

Perbezaan apabila fungsi C++ mengembalikan tatasusunan

Dalam C++, fungsi boleh mengembalikan pelbagai jenis data, termasuk tatasusunan. Apabila fungsi mengembalikan tatasusunan, terdapat dua gelagat berbeza:

  • Kembali mengikut nilai: Mengembalikan salinan tatasusunan kepada pemanggil.
  • Kembalikan melalui rujukan: Mengembalikan rujukan kepada tatasusunan, bukan salinan.

Mengembalikan mengikut nilai

Apabila mengembalikan tatasusunan mengikut nilai, fungsi mencipta salinan tatasusunan dan mengembalikannya kepada pemanggil. Ini mencipta salinan memori baharu dan sebarang perubahan yang dibuat pada salinan itu tidak akan menjejaskan tatasusunan asal.

Sintaks:

int* foo() {
    int arr[] = {1, 2, 3};
    return arr;
}

Kes praktikal:

int main() {
    int* arr = foo();
    arr[0] = 10; // 更改副本值,不影响原始数组
    return 0;
}

Kembalikan melalui rujukan

Apabila mengembalikan tatasusunan melalui rujukan, fungsi mengembalikan rujukan kepada tatasusunan asal. Ini tidak mencipta salinan memori baharu, bermakna sebarang perubahan yang dibuat pada tatasusunan yang dikembalikan akan ditunjukkan terus dalam tatasusunan asal.

Sintaks:

int* &bar() {
    static int arr[] = {1, 2, 3};
    return arr;
}

Kes praktikal:

int main() {
    int* &arr = bar();
    arr[0] = 10; // 更改原始数组值
    return 0;
}

Perbezaan

Kembalikan Salinan . overhed lebih rendahKecekapankecekapan pelaksanaan yang lebih rendahkecekapan pelaksanaan yang lebih tinggi
Ciri Pulangan mengikut nilai Pulangan mengikut nilai
Ya Tidak

Atas ialah kandungan terperinci Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?. 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