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
DDDasal
2024-12-27 04:28:28396semak imbas

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;
}

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!

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