Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pengubahsuaian Parameter Di Dalam Fungsi Mempengaruhi Fungsi Panggilan dalam C dan C?

Bagaimanakah Pengubahsuaian Parameter Di Dalam Fungsi Mempengaruhi Fungsi Panggilan dalam C dan C?

Barbara Streisand
Barbara Streisandasal
2024-12-18 22:57:18541semak imbas

How Do Parameter Modifications Inside a Function Affect the Calling Function in C and C  ?

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>
<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>
<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>
<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!

Kenyataan:
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