Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk memperuntukkan memori untuk parameter rujukan fungsi C++
Dalam C++, parameter fungsi boleh dihantar mengikut nilai, menghantar salinan parameter, atau lulus melalui rujukan, mengakses terus memori asal parameter. Apabila melalui rujukan, perubahan yang dibuat kepada parameter oleh fungsi dicerminkan terus dalam pemanggil. Sebagai contoh, lulus parameter melalui rujukan boleh mengoptimumkan prestasi, terutamanya apabila berurusan dengan struktur data yang besar, dan mengelakkan peruntukan memori tambahan dan overhed salinan.
Cara memori diperuntukkan untuk parameter rujukan fungsi dalam C++
Dalam C++, parameter fungsi boleh diluluskan mengikut nilai atau rujukan. Apabila lulus mengikut nilai, salinan parameter dihantar ke fungsi, manakala apabila lulus melalui rujukan, fungsi menggunakan alamat memori asal parameter secara langsung.
Lulus nilai
void incrementValue(int value) { value++; // 改变的是 value 的副本,不会影响原始变量 } int main() { int number = 5; incrementValue(number); cout << number << endl; // 仍然输出 5 }
Lulus rujukan
void incrementValue(int& value) { value++; // 改变的是原始变量 } int main() { int number = 5; incrementValue(number); cout << number << endl; // 输出 6 }
Dalam contoh di atas, parameter incrementValue
函数通过引用传递了 value
. Ini bermakna fungsi beroperasi secara langsung pada pembolehubah asal, jadi sebarang perubahan yang dibuat padanya akan ditunjukkan dalam pemanggil fungsi.
Kes praktikal:
Bayangkan senario di mana anda perlu menulis fungsi untuk mengira hasil darab titik dua vektor. Melepasi nilai akan memerlukan mencipta dua salinan vektor, menghasilkan peruntukan memori tambahan dan prestasi yang lebih perlahan. Sebaliknya, menghantar vektor melalui rujukan mengelakkan peruntukan memori, sekali gus meningkatkan prestasi.
double dotProduct(const vector<double>& a, const vector<double>& b) { double sum = 0.0; for (size_t i = 0; i < a.size(); i++) { sum += a[i] * b[i]; } return sum; } int main() { vector<double> a = {1.0, 2.0, 3.0}; vector<double> b = {4.0, 5.0, 6.0}; cout << dotProduct(a, b) << endl; // 输出 32.0 }
Dalam kes ini, menghantar vektor melalui rujukan mengelakkan membuat salinan, sekali gus meningkatkan prestasi pengiraan produk titik.
Atas ialah kandungan terperinci Bagaimana untuk memperuntukkan memori untuk parameter rujukan fungsi C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!