Pemanggilan dengan nilai (Pass By Value) merupakan cara yang dipakai untuk seluruh fungsi buatan yang telah dibahas pada artikel sebelumnya. Pada pass by value, nilai dari parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tidak bisa dirubah sekalipun nilai parameter formal berubah.
Untuk pengertian parameter aktual dan parameter formal bisa Anda lihat di artikel sebelumnya Fungsi Pada Pemrograman Bahasa C.Untuk lebih jelasnya lihat pada fungsi tukar() pada contoh berikut ini.
#include <stdio.h>
//inisialisasi fungsi tukar
void tukar (int, int);
//fungsi main
main(){
int a = 88, b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
tukar(a,b);
printf("\nNilai setelah pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
}
//fungsi tukar
void tukar(int x, int y) {
int z;
z = x;
x = y;
y = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", x, y);
}
Tampak bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan b (yang dilewatkan ke fungsi tukar() tidak berubah, walaupun pada fungsi tukar() telah terjadi penukaran antara parameter x dan y . Mengapa hal ini bisa terjadi ? Sebab x hanyalah salinan dari a dan y adalah salinan dari b (Lihat gambar di bawah ini).Pada saat pemanggilan fungsi, maka :
- x bernilai 88 (nilai a)
- y bernilai 77 (nilai b)
Sesudah pernyataan-pernyataan berikut dijalankan, maka :
z = x;
x = y;
y = z;
x akan bernilai 77 dan y bernilai 88.
Proses Penukaran Nilai |
Pass By Reference
Pemanggilan dengan referensi (Pass By Reference) merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
Pemanggilan dengan referensi (Pass By Reference) merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
/* File program : tukar2.c
Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */
#include <stdio.h>
void tukar (int *px, int *py); //prototype fungsi
main() {
int a= 88,b = 77;
printf("Nilai sebelum pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
tukar(&a, &b); //alamat a dan alamat b
printf("\nNilai setelah pemanggilan fungsi\n");
printf("a = %d b = %d\n", a, b);
}
void tukar(int *px, int *py) {
int z;
z = *px;
*px = *py;
*py = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", *px, *py);
}
Sebagai contoh perhatikan program tukar2.c yang merupakan modifikasi dari tukar1.c. Perubahan yang pertama terletak dalam definisi fungsi, yang kini berupa :void tukar(int *px, int *py) {
int z;
z = *px;
*px = *py;
*py = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", *px, *py);
}
Adapun perubahan dalam parameter aktualnya menjadi :tukar(&a,&b); //alamat a dan alamat b
Dalam deklarasi parameterint *px, int *py
menyatakan bahwa px dan py adalah suatu variabel pointer. Yang dimaksudkan sebagai variabel pointer adalah suatu variabel yang menunjuk ke variabel lain. Lebih jelasnya, variabel pointer berisi alamat dari variabel lain.Variabel Pointer px Menunjuk Variabel a Dan Variabel Pointer py Menunjuk Variabel b |
z = *px; /* 1 */
*px = *py; /* 2 */
*py = z; /* 3 */
Demikian artikel tentang Pass By Value Dan Pass By Reference Pada Bahasa C. Semoga bermanfaat :)
Ketentuan Komentar !!!
------------------------------
1. Komentar sesuai dengan artikel di atas
2. Komentar SPAM otomatis di blokir dan tidak akan dimunculkan
3. Komentar meninggalkan link aktif otomatis terhapus
4. Berkomentar dengan etika
Terima kasih atas komentarnya, semoga postingan di atas bermanfaat :)