Melalui Parameter melalui Rujukan lwn Nilai dalam Fungsi
Pertimbangkan coretan kod berikut:
void trans(double x, double y, double theta, double m, double n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
Jika anda memanggil fungsi ini seperti berikut:
trans(center_x, center_y, angle, xc, yc);
dan mengharapkan nilai daripada xc dan yc untuk menukar, anda akan kecewa. Ini kerana parameter diluluskan oleh nilai dalam C secara lalai, bermakna sebarang perubahan yang dibuat pada parameter di dalam fungsi tidak ditunjukkan dalam pembolehubah asal yang diluluskan.
Untuk mengatasi isu ini, anda boleh lulus sama ada parameter melalui rujukan atau gunakan aritmetik penuding.
Menggunakan Rujukan
Dalam C , anda boleh menggunakan rujukan untuk lulus parameter dengan rujukan. Ini membolehkan anda mengubah suai pembolehubah asal yang dihantar masuk. Begini cara anda mengubah suai fungsi trans untuk menggunakan rujukan:
void trans(double x, double y, double theta, double& m, double& n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
Perhatikan bahawa jenis parameter kini merujuk kepada dua kali ganda (iaitu, berganda&).
Anda kemudian boleh memanggil fungsi seperti berikut:
trans(center_x, center_y, angle, xc, yc);
Ini kini akan mengubah suai nilai dengan betul xc dan yc.
Menggunakan Aritmetik Penunjuk
Cara lain untuk menghantar parameter melalui rujukan dalam C ialah menggunakan aritmetik penuding. Ini lebih biasa dalam C, tetapi ia juga boleh digunakan dalam C . Begini cara anda mengubah suai fungsi trans untuk menggunakan aritmetik penunjuk:
void trans(double x, double y, double theta, double* m, double* n) { *m = cos(theta) * x + sin(theta) * y; *n = -sin(theta) * x + cos(theta) * y; }
Perhatikan bahawa jenis parameter kini adalah penunjuk kepada dua kali ganda (iaitu, dua kali ganda*).
Anda kemudiannya boleh memanggil berfungsi seperti berikut:
trans(center_x, center_y, angle, &xc, &yc);
Ini juga akan mengubah suai nilai xc dan yc.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengubah Suai Pembolehubah Asal Apabila Melewati Parameter kepada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!