C ++

C ++ Panggilan Melalui Alamat dan Panggilan Melalui Rujukan

C ++ Panggilan Melalui Alamat dan Panggilan Melalui Rujukan

C ++ adalah bahasa pengaturcaraan tujuan umum yang fleksibel. Ia pada asalnya dicipta oleh Bjarne Stroustrup, seorang saintis komputer Denmark, pada tahun 1985. C ++ menyokong kaedah lulus tiga parameter, i.e., panggilan mengikut nilai, panggilan demi alamat, dan panggilan dengan rujukan. Dalam artikel ini, kita akan membincangkan mengenai mekanisme panggilan melalui alamat dan panggilan melalui panggilan.

Apa itu fungsi?

Sebelum kita masuk ke topik sebenar, kita perlu memahami apa fungsi dalam C++. Ramai di antara anda mungkin sudah biasa dengan fungsi.

Fungsi pada dasarnya adalah sekeping kod yang dapat digunakan untuk melakukan tugas tertentu. Fungsi terutama digunakan untuk mengurangkan kod berulang dalam program C ++. Ia memerlukan input sebagai parameter dan mengembalikan output sebagai nilai kembali. Sekiranya kita menentukan fungsi sekali, kita boleh memanggil / menggunakannya berulang kali di bahagian akhir program kita. Dengan cara itu, kami menyimpan banyak kod berulang dalam program ini.

Setiap program C ++ mesti mempunyai fungsi "utama ()". Fungsi "utama ()" adalah titik masuk untuk program C ++. Selain fungsi "utama ()", pengaturcara dapat menentukan seberapa banyak fungsi yang mereka inginkan.

Berikut adalah sintaks menentukan fungsi:

Return_type Function_Name (Senarai parameter input)

Fungsi dalam C ++ dapat menerima 0 atau lebih jumlah parameter input, sedangkan fungsi hanya dapat mengembalikan satu nilai kembali.

Apa itu Alamat?

Terdapat dua jenis pemboleh ubah dalam C ++ (serupa dengan bahasa C) - Pemboleh ubah Data dan Pembolehubah Alamat. Pemboleh ubah alamat digunakan untuk menyimpan alamat pemboleh ubah data lain. Sebagai contoh, mari kita pertimbangkan coretan kod berikut:

int i = 100;
int * ptr = & i;

Di sini, pernyataan pertama memberitahu kita bahawa pemboleh ubah "i" adalah pemboleh ubah data, dan menyimpan nilai 100. Dalam pernyataan kedua, kami menyatakan pemboleh ubah penunjuk, i.e. "Ptr," dan memulakannya dengan alamat pemboleh ubah "i".

Apa itu Rujukan?

Rujukannya adalah satu lagi ciri kuat bahasa C ++. Mari pertimbangkan coretan kod berikut:

int a = 200;
int & r = a;

Dalam contoh ini, kita telah menyatakan bilangan bulat, i.e. "A" dan kemudian menyatakan variabel rujukan "r", yang diinisialisasi dengan nilai "a". Jadi, pemboleh ubah rujukan tidak lain hanyalah alias pemboleh ubah lain.

Kaedah lulus parameter:

Terdapat tiga jenis kaedah lulus parameter dalam bahasa C ++:

  1. Panggilan mengikut nilai / Lulus mengikut nilai
  2. Panggilan melalui alamat / Lulus dengan alamat
  3. Panggilan melalui rujukan / Lulus dengan rujukan

Dalam artikel ini, kita membahas mengenai - Panggilan berdasarkan alamat dan Panggilan dengan rujukan.

Apa itu Panggilan Melalui Alamat / Alamat lulus?

Sekiranya kaedah Call by address / Pass by address, fungsi argumen diteruskan sebagai alamat. Fungsi pemanggil melewati alamat parameter. Pemboleh ubah penunjuk digunakan dalam definisi fungsi. Dengan bantuan kaedah Call by address, fungsi tersebut dapat mengakses parameter sebenar dan mengubahnya. Kami akan melihat contoh kaedah Panggilan melalui alamat kemudian di artikel ini.

Apa itu Panggilan Melalui Rujukan / Lulus dengan rujukan?

Dalam kaedah Call by referensi / Pass by referensi, parameter fungsi diteruskan sebagai rujukan. Di dalam definisi fungsi, parameter sebenar diakses menggunakan pemboleh ubah rujukan.

Contoh:

Sekarang, kerana kita memahami konsep kaedah lulus parameter, kita akan melihat beberapa contoh program untuk memahami mekanisme lulus parameter di C ++:

  1. Contoh-1 - Panggilan Melalui Alamat (1)
  2. Contoh-2 - Panggilan Melalui Alamat (2)
  3. Contoh-3 - Panggilan dengan Rujukan (1)
  4. Contoh-4 - Panggilan dengan Rujukan (2)

Dua contoh pertama diberikan untuk menjelaskan bagaimana kaedah Call by address berfungsi di C++. Dua contoh terakhir adalah menerangkan konsep Call by referensi.

Contoh-1 - Panggilan Melalui Alamat (1)

Dalam contoh ini, kita akan menunjukkan mekanisme panggilan melalui alamat. Dari fungsi "main ()", kita memanggil fungsi "hello ()" dan meneruskan alamat "var". Dalam definisi fungsi, kita menerima alamat "var" dalam pemboleh ubah penunjuk, i.e., "P". Di dalam fungsi halo, nilai "var" diubah menjadi 200 dengan bantuan penunjuk. Oleh itu, nilai "var" berubah menjadi 200 di dalam fungsi "utama ()" setelah panggilan fungsi "hello ()".

#sertakan
menggunakan ruang nama std;
batal hello (int * p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
* p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;

int utama ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hello (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
pulangan 0;

Contoh-2 - Panggilan Melalui Alamat (2)

Ini adalah satu lagi kaedah kaedah panggilan melalui alamat. Dalam contoh ini, kita akan menerangkan bagaimana kaedah panggilan melalui alamat dapat digunakan untuk menyelesaikan masalah kehidupan nyata. Sebagai contoh, kami ingin menulis fungsi untuk menukar dua pemboleh ubah. Sekiranya kita menggunakan mekanisme panggilan demi nilai untuk menukar dua pemboleh ubah, pemboleh ubah yang sebenarnya tidak akan bertukar dalam fungsi pemanggil. Kaedah panggilan melalui alamat dapat digunakan dalam senario seperti itu. Dalam contoh ini, kami meneruskan alamat kedua-dua var_1 (& var_1) dan var_2 (& var_2) ke fungsi "mySwap ()". Di dalam fungsi "mySwap ()", kami menukar nilai kedua-dua pemboleh ubah ini dengan bantuan petunjuk. Seperti yang anda lihat dalam output di bawah ini, nilai sebenarnya dari pemboleh ubah ini ditukar dalam fungsi "utama ()" setelah fungsi "mySwap ()" dijalankan.

#sertakan
menggunakan ruang nama std;
batal mySwap (int * vptr_1, int * vptr_2)

int temp_var;
temp_var = * vptr_1;
* vptr_1 = * vptr_2;
* vptr_2 = temp_var;

int utama ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by address." << endl << endl;
mySwap (& var_1, & var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
pulangan 0;

Contoh-3 - Panggilan dengan Rujukan (1)

Dalam contoh ini, kita akan menunjukkan bagaimana panggilan melalui rujukan berfungsi di C++. Dalam definisi fungsi "hello ()", nilainya diterima sebagai pemboleh ubah rujukan (& p). Dengan bantuan pemboleh ubah rujukan (i.e., p), kita dapat mengubah nilai parameter sebenarnya (var) di dalam fungsi "utama ()".

#sertakan
menggunakan ruang nama std;
batal hello (int & p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;

int utama ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hello (var);
cout << endl << "Value of var inside main() function = " << var << endl;
pulangan 0;

Contoh-4 - Panggilan dengan Rujukan (2)

Ini adalah contoh lain panggilan melalui rujukan. Dalam contoh ini, kita akan menunjukkan bagaimana panggilan melalui rujukan berfungsi di C ++ dengan bantuan contoh dunia nyata. Fungsi “mySwap ()” dipanggil dari fungsi “main ()” dengan parameter berikut - var_1 dan var_2. Di dalam fungsi "mySwap ()", kami menerima parameter sebagai pemboleh ubah rujukan.

#sertakan
menggunakan ruang nama std;
batal mySwap (int & vref_1, int & vref_2)

int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;

int utama ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by reference." << endl << endl;
mySwap (var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
pulangan 0;

Kesimpulannya

Memahami kaedah lulus parameter dalam C++ sangat penting. Bahasa pengaturcaraan C menyokong Call by value dan Call by address sahaja. Tetapi, C ++ menyokong Call dengan rujukan bersama dua mekanisme sebelumnya. Dalam artikel ini, kami telah melihat beberapa contoh kerja untuk memahami konsep Panggilan mengikut alamat dan Panggilan dengan rujukan. Panggilan melalui alamat adalah kaedah yang sangat kuat dan popular dalam aplikasi domain terbenam.

Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...