Pengubahsuaian Parameter dalam Fungsi: Kesan pada Pemanggil
Apabila mengubah suai parameter dalam fungsi, adalah penting untuk memahami kesannya terhadap pemanggil . Dalam coretan kod yang dibentangkan:
<br>void trans(double x,double y,double theta,double m,double n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y;
}
memanggil fungsi dengan trans(center_x,center_y,angle,xc,yc) ini tidak mengubah suai nilai xc dan yc secara langsung. Ini berlaku kerana C melepasi parameter fungsi mengikut nilai, bermakna fungsi menerima salinan pembolehubah.
Untuk menangani perkara ini, anda mempunyai dua pilihan:
1. Dalam C :
Gunakan rujukan untuk menghantar parameter melalui rujukan, mengubah suai pembolehubah asal dalam fungsi:
<br>void trans(double x, double y, double theta, double& m, double& n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y;
}
2. Dalam C:
Luluskan parameter dengan menghantar alamatnya secara eksplisit menggunakan penunjuk:
<br>void trans(double x, double y, double theta, double<em> m, dua kali ganda</em> n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">*m=cos(theta)*x+sin(theta)*y; *n=-sin(theta)*x+cos(theta)*y;
}
Dengan pengubahsuaian ini, panggilan trans(center_x,center_y,angle,xc,yc) akan terus dikemas kini nilai xc dan yc. Jika tingkah laku ini diingini, maka menggunakan rujukan atau petunjuk adalah perlu untuk mencapai kesan yang diingini.
Atas ialah kandungan terperinci Bagaimanakah Pengubahsuaian Parameter Di Dalam Fungsi Mempengaruhi Fungsi Panggilan dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!