C++ Panggilan Berdasarkan Alamat dan Panggilan Berdasarkan Referensi

C Call Address



C++ adalah bahasa pemrograman tujuan umum yang fleksibel. Itu awalnya dibuat oleh Bjarne Stroustrup, seorang ilmuwan komputer Denmark, pada tahun 1985. C++ mendukung metode passing tiga parameter, yaitu call by value, call by address, dan call by reference. Pada artikel ini, kita akan membahas tentang mekanisme call by address dan call by reference.

Apa itu fungsi?

Sebelum kita masuk ke topik 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 satu kali, kita dapat memanggil/menggunakannya beberapa kali di bagian selanjutnya dari program kita. Dengan begitu, kita 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 sebanyak mungkin fungsi yang mereka inginkan.



Berikut adalah sintaks untuk mendefinisikan fungsi:





Nama_fungsi_tipe_kembali(Daftar parameter masukan)

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 dari variabel data lain. Sebagai contoh, mari kita perhatikan cuplikan kode berikut:



ke dalamSaya= 100;
ke dalam *ptr= &Saya;

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

Apa itu Referensi?

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

ke dalamke= 200;
ke dalam &R=ke;

Dalam contoh ini, kita telah mendeklarasikan bilangan bulat, yaitu 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 – Panggilan berdasarkan alamat dan Panggilan berdasarkan referensi.

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 Call by address, fungsi tersebut 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 cara kerja metode Call by address di C++. Dua contoh terakhir adalah untuk menjelaskan konsep Call by reference.

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, yaitu, hal. Di dalam fungsi hello, nilai var diubah menjadi 200 dengan bantuan pointer. Oleh karena itu, nilai var diubah menjadi 200 di dalam fungsi main() setelah pemanggilan fungsi hello().

#termasuk
menggunakan ruang namajam;

ruang kosongHalo(ke dalam *P)
{
biaya <<akhir<< 'Di dalam fungsi hello() : ' <<akhir;
biaya << 'Nilai dari *p = ' << *P<<akhir;
*P= 200;
biaya << 'Nilai dari *p = ' << *P<<akhir;
biaya << 'Keluar dari fungsi hello().' <<akhir;
}

ke dalamutama()
{
ke dalamdi mana= 100;
biaya << 'Nilai var di dalam main() function = ' <<di mana<<akhir;

Halo(&di mana);

biaya <<akhir<< 'Nilai var di dalam main() function = ' <<di mana<<akhir;

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, kita ingin menulis fungsi untuk menukar dua variabel. Jika kita menggunakan mekanisme call by value untuk menukar dua variabel, variabel aktual tidak akan ditukar 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 ruang namajam;

ruang kosongmySwap(ke dalam *vptr_1,ke dalam *vptr_2)
{
ke dalamtemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

ke dalamutama()
{
ke dalamvar_1= 100;
ke dalamvar_2= 300;

biaya << 'Sebelum memanggil fungsi mySwap(), nilai var_1 : ' <<var_1<<akhir;
biaya << 'Sebelum memanggil fungsi mySwap(), nilai var_2 : ' <<var_2<<akhir<<akhir;

biaya << 'Memanggil fungsi mySwap() - Panggilan berdasarkan alamat.' <<akhir<<akhir;
mySwap(&var_1,&var_2);

biaya << 'Setelah memanggil fungsi mySwap(), nilai var_1 : ' <<var_1<<akhir;
biaya << 'Setelah memanggil fungsi mySwap(), nilai var_2 : ' <<var_2<<akhir;

kembali 0;
}

Contoh-3 – Panggilan dengan Referensi (1)

Dalam contoh ini, kita akan mendemonstrasikan cara kerja call by reference di C++. Dalam definisi fungsi hello(), nilai diterima sebagai variabel referensi (&p). Dengan bantuan variabel referensi (yaitu, p), kita dapat mengubah nilai parameter aktual (var) di dalam fungsi main().

#termasuk
menggunakan ruang namajam;

ruang kosongHalo(ke dalam &P)
{
biaya <<akhir<< 'Di dalam fungsi hello() : ' <<akhir;
biaya << 'Nilai p = ' <<P<<akhir;
P= 200;
biaya << 'Nilai p = ' <<P<<akhir;
biaya << 'Keluar dari fungsi hello().' <<akhir;
}

ke dalamutama()
{
ke dalamdi mana= 100;
biaya << 'Nilai var di dalam main() function = ' <<di mana<<akhir;

Halo(di mana);

biaya <<akhir<< 'Nilai var di dalam main() function = ' <<di mana<<akhir;

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(), kita menerima parameter sebagai variabel referensi.

#termasuk
menggunakan ruang namajam;

ruang kosongmySwap(ke dalam &vref_1,ke dalam &vref_2)
{
ke dalamtemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

ke dalamutama()
{
ke dalamvar_1= 100;
ke dalamvar_2= 300;

biaya << 'Sebelum memanggil fungsi mySwap(), nilai var_1 : ' <<var_1<<akhir;
biaya << 'Sebelum memanggil fungsi mySwap(), nilai var_2 : ' <<var_2<<akhir<<akhir;

biaya << 'Memanggil fungsi mySwap() - Panggil dengan referensi.' <<akhir<<akhir;
mySwap(var_1, var_2);

biaya << 'Setelah memanggil fungsi mySwap(), nilai var_1 : ' <<var_1<<akhir;
biaya << 'Setelah memanggil fungsi mySwap(), nilai var_2 : ' <<var_2<<akhir;

kembali 0;
}

Kesimpulan

Memahami metode passing parameter di C++ sangat penting. Bahasa pemrograman C mendukung Call by value dan Call by address 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 berdasarkan alamat adalah metode yang sangat kuat dan populer dalam aplikasi domain tertanam.