Mengapa Saya Tidak Boleh Mengubah Suai Parameter Input dalam Fungsi C/C Menggunakan Panggilan demi Nilai?

Mary-Kate Olsen
Lepaskan: 2024-11-13 15:49:02
asal
845 orang telah melayarinya

Why Can't I Modify Input Parameters in C/C   Functions Using Call-by-Value?

Mengapa Panggilan demi Nilai Gagal Mengemas kini Parameter Input

Dalam C/C , parameter fungsi biasanya diluluskan mengikut nilai, bermakna salinan pembolehubah input dicipta dan dihantar ke fungsi. Ini menunjukkan bahawa sebarang pengubahsuaian yang dibuat dalam fungsi hanya mempengaruhi salinan setempat dan bukan pembolehubah asal.

Pertimbangkan contoh:

#include <iostream>

using namespace std;

void changeValue(int value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int value) {
  value = 6;
}
Salin selepas log masuk

Kod ini cuba mengubah suai nilai parameter input dalam fungsi changeValue. Walau bagaimanapun, output kekal 5, walaupun fungsi menukar salinan setempat kepada 6.

Ini kerana fungsi changeValue menerima salinan pembolehubah nilai daripada main(). Fungsi ini kemudiannya beroperasi pada salinan tempatan ini, yang bebas daripada pembolehubah asal dalam main(). Oleh itu, perubahan yang dibuat dalam fungsi tidak dibawa ke pembolehubah asal.

Menggunakan Panggilan demi Rujukan untuk Mengubah Suai Parameter Input

Untuk mengubah suai pembolehubah asal dari dalam fungsi, panggilan demi rujukan mesti digunakan. Ini membenarkan fungsi untuk mengakses dan mengubah suai pembolehubah sebenar dalam ingatan, bukannya hanya salinan:

#include <iostream>

using namespace std;

void changeValue(int &value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int &value) {
  value = 6;
}
Salin selepas log masuk

Dalam contoh ini, fungsi changeValue mengambil rujukan kepada pembolehubah nilai, yang diwakili oleh ampersand (& ). Ini membolehkan fungsi mengakses dan mengubah suai pembolehubah asal secara langsung. Akibatnya, apabila fungsi menetapkan nilai kepada 6, ia mengubah suai pembolehubah sebenar dalam main(), dan output mencerminkan perubahan dengan betul.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengubah Suai Parameter Input dalam Fungsi C/C Menggunakan Panggilan demi Nilai?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan