Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?

PHPz
Lepaskan: 2024-04-19 21:06:02
asal
661 orang telah melayarinya

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

Kes praktikal:

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

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

Kes praktikal:

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

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!

Label berkaitan:
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