Pass By Value Dan Pass By Reference Pada Bahasa C

Tuesday, January 22, 2019

Pass By Value Dan Pass By Reference Pada Bahasa C Pass By Value Dan Pass By Reference Pada Bahasa C


Pengertian Pass By Value

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.
Pass By Value Dan Pass By Reference Pada Bahasa C Pass By Value Dan Pass By Reference Pada Bahasa C
Proses Penukaran Nilai
Gambar tersebut menjelaskan bahwa a dan b tidak berubah. Yang berubah hanyalah parameter x dan y.


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.
/* 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 parameter
int *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.

Adapun pada pemanggilan fungsi, &a dan &b masing-masing berarti "alamat a" dan "alamat b". Dengan pemanggilan menyerupai ini, korelasi antara variabel pointer px dan py dengan variabel a dan b adalah menyerupai ditunjukkan pada gambar di bawah ini Dalam hal ini, px dikatakan menunjuk variabel a dan py menunjuk variabel b.
Variabel Pointer px Menunjuk Variabel a Dan Variabel Pointer py Menunjuk Variabel b 
Setelah px menunjuk a dan py menunjuk b, proses penukaran isi a dan b dilakukan dengan cara sebagai berikut :
z = *px; /* 1 */ *px = *py; /* 2 */ *py = z; /* 3 */ 
Pertama variabel z diisi dengan nilai yang ditunjuk oleh px. Kedua, yang ditunjuk oleh px diisi dengan yang ditunjuk oleh py (berarti a diisi dengan b). Ketiga, yang ditunjuk oleh py diberi nilai z. Dengan melalui tiga pernyataan di atas, nilai a dan b dapat diubah di dalam fungsi.





Demikian artikel tentang Pass By Value Dan Pass By Reference Pada Bahasa C. Semoga bermanfaat :)
Sumber https://wapwibowo.blogspot.com/