10.4.1 2. Passing by Reference
Merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini digunakan untuk mengubah isi dari suatu variabel di luar fungsi dengan pelaksaaan pengubahan dilakukan di dalam fungsi. Sebagai contoh perhatikan program fungsi tukar() dibawah ini yang telah di modifikasi dari fungsi tukar sebelumnya untuk melihat perbedaannya :
int tukarreference(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 :
tukarreference(&a,&b);
Dalam deklarasi parameter :
int *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. Pemanggilan fungsi &a dan &b masing-masing berarti alamat a dan alamat b. Dengan pemanggilan seperti ini hubungan antara variabel pointer px dan py dengan variabel a dan b adalah seperti ditunjukan gambar dibawah ini. Dalam hal ini px dikatakan menunjuk variabel a dan py menunjuk variabel b.
#include
#include
int tukarreference(int *px, int *py);
main()
{
int a,b;
printf("Passing by reference\n");
printf("********************\n\n");
printf("inputkan nilai a = ");
scanf("%d", &a);
printf("inputkan nilai b = ");
scanf("%d", &b);
printf("\nNilai sebelum pemanggilan fungsi\n");
printf("a = %d b = %d\n", a,b);
tukarreference(&a,&b);
printf("\nNilai setelah pemanggilan fungsi\n");
printf("a = %d b = %d\n", a,b);
getch();
}
int tukarreference(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);
}
Social Plugin