C++

C++ Panggilan Berdasarkan Alamat dan Panggilan Berdasarkan Referensi

C++ Panggilan Berdasarkan Alamat dan Panggilan Berdasarkan Referensi

C++ adalah bahasa pemrograman serba guna yang fleksibel. Ini awalnya dibuat oleh Bjarne Stroustrup, seorang ilmuwan komputer Denmark, pada tahun 1985. C++ mendukung metode passing tiga parameter, yaitu.e., panggilan berdasarkan nilai, panggilan berdasarkan alamat, dan panggilan dengan referensi. Pada artikel ini, kita akan membahas tentang mekanisme call by address dan call by reference.

Apa itu fungsi??

Sebelum kita masuk ke topik yang sebenarnya, kita perlu memahami apa fungsi dalam C++. Banyak dari Anda mungkin sudah akrab dengan fungsi.

Fungsi pada dasarnya adalah bagian dari kode yang dapat digunakan untuk melakukan tugas tertentu. Fungsi terutama digunakan untuk mengurangi kode berulang dalam program C++. Dibutuhkan input sebagai parameter dan mengembalikan output sebagai nilai balik. Jika kita mendefinisikan fungsi sekali, kita dapat memanggil/menggunakannya beberapa kali di bagian selanjutnya dari program kita our. Dengan begitu, kami menyimpan banyak kode berulang dalam program.

Setiap program C++ harus memiliki fungsi “main()”. Fungsi "main()" adalah titik masuk untuk program C++. Terlepas dari fungsi “main()”, programmer dapat mendefinisikan fungsi sebanyak yang mereka inginkan.

Berikut adalah sintaks untuk mendefinisikan fungsi:

Return_type Function_Name (Masukkan Daftar parameter)

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

Apa itu Alamat??

Ada dua jenis variabel dalam C++ (mirip dengan bahasa C) - Variabel Data dan Variabel Alamat. Variabel alamat digunakan untuk menyimpan alamat variabel data lain. Sebagai contoh, mari kita perhatikan cuplikan kode berikut:

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

Di sini, pernyataan pertama memberi tahu kita bahwa variabel "i" adalah variabel data, dan menyimpan nilai 100. Dalam pernyataan kedua, kami mendeklarasikan variabel pointer, i.e. "ptr," dan menginisialisasi dengan alamat variabel "i".

Apa itu Referensi??

Referensi adalah fitur canggih lain dari bahasa C++++. Mari kita perhatikan cuplikan kode berikut:

int = 200;
int &r = a;

Dalam contoh ini, kami telah mendeklarasikan bilangan bulat, i.e. "a" dan kemudian mendeklarasikan variabel referensi "r", yang diinisialisasi dengan nilai "a". Jadi, variabel referensi tidak lain adalah alias dari variabel lain.

Metode melewati parameter:

Ada tiga jenis metode passing parameter dalam bahasa C++:

  1. Panggil berdasarkan nilai / Lewati nilai
  2. Panggilan berdasarkan alamat / Lewati alamat
  3. Panggilan dengan referensi / Lewat referensi

Pada artikel ini, kita membahas tentang - Call by address dan Call by reference.

Apa itu Call By Address / Pass by address?

Dalam kasus metode Call by address / Pass by address, argumen fungsi dilewatkan sebagai alamat. Fungsi pemanggil melewati alamat parameter. Variabel pointer digunakan dalam definisi fungsi. Dengan bantuan metode Panggil dengan alamat, fungsi dapat mengakses parameter aktual dan memodifikasinya. Kita akan melihat contoh metode Call by address di bagian selanjutnya dari artikel ini.

Apa itu Call By Reference / Pass by reference?

Dalam metode Call by reference / Pass by reference, parameter fungsi dilewatkan sebagai referensi. Di dalam definisi fungsi, parameter aktual diakses menggunakan variabel referensi.

Contoh:

Sekarang, karena kita memahami konsep metode passing parameter, kita akan melihat beberapa contoh program untuk memahami mekanisme passing parameter di C++:

  1. Contoh-1 - Panggilan berdasarkan Alamat (1)
  2. Contoh-2 - Panggilan berdasarkan Alamat (2)
  3. Contoh-3 - Panggilan dengan Referensi (1)
  4. Contoh-4 - Panggilan dengan Referensi (2)

Dua contoh pertama diberikan untuk menjelaskan bagaimana metode Call by address bekerja di C++. Dua contoh terakhir adalah untuk menjelaskan konsep Panggilan dengan referensi.

Contoh-1 - Panggilan berdasarkan Alamat (1)

Dalam contoh ini, kita akan mendemonstrasikan mekanisme panggilan dengan alamat. Dari fungsi “main()”, kita memanggil fungsi “hello()” dan meneruskan alamat “var”. Dalam definisi fungsi, kami menerima alamat "var" dalam variabel pointer, i.e., "p". Di dalam fungsi hello, nilai "var" diubah menjadi 200 dengan bantuan pointer. Oleh karena itu, nilai "var" berubah menjadi 200 di dalam fungsi "main()" setelah pemanggilan fungsi "hello()".

#termasuk
menggunakan namespace std;
batalkan halo(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;
halo(&var);
cout << endl << "Value of var inside main() function = " << var << endl;
kembali 0;

Contoh-2 - Panggilan berdasarkan Alamat (2)

Ini adalah contoh lain dari metode panggilan dengan alamat. Dalam contoh ini, kami akan menjelaskan bagaimana metode panggilan dengan alamat dapat digunakan untuk memecahkan masalah kehidupan nyata. Misalnya, kami ingin menulis fungsi untuk menukar dua variabel. Jika kita menggunakan mekanisme pemanggilan nilai untuk menukar dua variabel, variabel aktual tidak tertukar dalam fungsi pemanggil. Metode panggilan dengan alamat dapat digunakan dalam skenario seperti itu. Dalam contoh ini, kami meneruskan alamat var_1 (&var_1) dan var_2 (&var_2) ke fungsi “mySwap()”. Di dalam fungsi “mySwap()”, kita menukar nilai kedua variabel ini dengan bantuan pointer. Seperti yang Anda lihat pada output di bawah ini, nilai sebenarnya dari variabel-variabel ini ditukar dalam fungsi "main()" setelah fungsi "mySwap()" dijalankan.

#termasuk
menggunakan namespace std;
batalkan 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;
kembali 0;

Contoh-3 - Panggilan dengan Referensi (1)

Dalam contoh ini, kita akan mendemonstrasikan cara kerja panggilan dengan referensi di C++. Dalam definisi fungsi “hello()”, nilai diterima sebagai variabel referensi (&p). Dengan bantuan variabel referensi (i.e., p), kita dapat mengubah nilai parameter aktual (var) di dalam fungsi “main()”.

#termasuk
menggunakan namespace std;
batal halo(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;
halo (var);
cout << endl << "Value of var inside main() function = " << var << endl;
kembali 0;

Contoh-4 - Panggilan dengan Referensi(2)

Ini adalah contoh lain dari panggilan dengan referensi. Dalam contoh ini, kita akan mendemonstrasikan cara kerja panggilan dengan referensi 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 variabel referensi.

#termasuk
menggunakan namespace std;
batalkan mySwap(int &vref_1, int &vref_2)

int temp_var;
suhu_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;
kembali 0;

Kesimpulan

Memahami metode passing parameter di C++ sangat krusial. Bahasa pemrograman C mendukung Panggilan berdasarkan nilai dan Panggilan berdasarkan alamat saja. Tapi, C++ mendukung Panggilan dengan referensi bersama dengan dua mekanisme sebelumnya. Dalam artikel ini, kita telah melihat beberapa contoh kerja untuk memahami konsep Call by address dan Call by reference. Panggilan dengan alamat adalah metode yang sangat kuat dan populer dalam aplikasi domain tertanam.

Cara Menginstal dan Memainkan Doom di Linux
Pengantar Doom Seri Doom berasal dari tahun 90-an setelah rilis Doom. Itu adalah hit instan dan sejak saat itu seri game telah menerima banyak penghar...
Vulkan untuk Pengguna Linux
Dengan setiap generasi baru kartu grafis, kami melihat pengembang game mendorong batas kesetiaan grafis dan selangkah lebih dekat ke fotorealisme. Tet...
OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...