Pemanggilan dengan nilai (Pass By Value) merupakan cara yang digunakan untuk seluruh fungsi buatan yang telah dibahas pada artikel sebelumnya. Pada pass by value, nilai dari parameter nyata akan disalin ke parameter formal. Dengan cara ini nilai parameter nyata tidak sanggup dirubah sekalipun nilai parameter formal berubah.
Untuk pengertian parameter nyata dan parameter formal sanggup Anda lihat di artikel sebelumnya Fungsi Pada Pemrograman Bahasa C.Untuk lebih jelasnya lihat pada fungsi tukar() pada teladan 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 sesudah 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 tamat 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 sanggup terjadi ? Sebab x hanyalah salinan dari a dan y yakni salinan dari b (Lihat gambar di bawah ini).Pada ketika 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 rujukan (Pass By Reference) merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini sanggup digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
Pemanggilan dengan rujukan (Pass By Reference) merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini sanggup digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
/* File kegiatan : tukar2.c Untuk melihat efek 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 sesudah 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 tamat fungsi tukar()\n"); printf("x = %d y = %d\n", *px, *py); }
Sebagai teladan perhatikan kegiatan tukar2.c yang merupakan modifikasi dari tukar1.c. Perubahan yang pertama terletak dalam definisi fungsi, yang sekarang berupa :void tukar(int *px, int *py) { int z; z = *px; *px = *py; *py = z; printf("\nNilai di tamat 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 yakni 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 :) Sumber https://wapwibowo.blogspot.com/