Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?
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.
Dalam C++, fungsi boleh mengembalikan pelbagai jenis data, termasuk tatasusunan. Apabila fungsi mengembalikan tatasusunan, terdapat dua gelagat berbeza:
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; }
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; }
Ciri | Pulangan mengikut nilai | Pulangan mengikut nilai |
---|---|---|
Ya | Tidak | . overhed lebih rendah|
kecekapan pelaksanaan yang lebih rendah | kecekapan pelaksanaan yang lebih tinggi | |
Atas ialah kandungan terperinci Apakah perbezaan apabila fungsi C++ mengembalikan tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!