Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Mengubah Suai Pembolehubah Asal Apabila Melewati Parameter kepada Fungsi C?

Bagaimanakah Saya Mengubah Suai Pembolehubah Asal Apabila Melewati Parameter kepada Fungsi C?

DDD
Lepaskan: 2024-12-27 04:28:28
asal
345 orang telah melayarinya

How Do I Modify Original Variables When Passing Parameters to a C   Function?

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;
}
Salin selepas log masuk

Jika anda memanggil fungsi ini seperti berikut:

trans(center_x, center_y, angle, xc, yc);
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan