Sebuah program biasanya terdiri dari beberapa fungsi. Fungsi-fungsi ini dapat memiliki parameter maupun tidak.

Pada umumnya, parameter dapat dibedakan menjadi dua jenis:

  1. Formal Parameter
  2. Actual Parameter

Perhatikan contoh di bawah ini, dimana program dibuat dalam Bahasa pemrograman C:

Bila kita lihat dari contoh di atas, kita melakukan pengiriman (passing) parameter berupa nilai dari x.

Secara umum, passing parameter dibagi menjadi dua jenis:

  1. Passing by Value
  2. Passing by Reference

Berdasarkan contoh di atas, passing parameter yang dilakukan adalah passing by value.

Passing by value merupakan pengiriman parameter yang dilakukan dengan meng-copy-kan value dari actual parameter (dari pemanggil/caller) ke formal parameter (function). Perubahan yang terjadi di dalam function tidak akan mempengaruhi nilai asli pemanggilnya.

Perhatikan contoh berikut ini untuk lebih jelasnya.

Pada contoh di atas ini, dibuat sebuah fungsi swap yang menerima 2 parameter  yakni int a, dan int b, dan bertujuan untuk menukar isi dari a dan b.

Bila kita jalankan program ini, maka output program adalah: “x = 7 dan y = 10”.

Hal ini terjadi dikarenakan perubahan nilai hanya terjadi di dalam fungsi swap. Dimana bila kita mencetak data a dan b di sana, nilai memang benar sudah terganti. Namun dikarenakan kita mengirimkan copy value dari nilai tersebut, maka tidak mempengaruhi x dan y dari sisi pemanggil.

Untuk menyelesaikan permasalahan di atas, kita dapat melakukan passing by reference, seperti contoh di bawah ini:

Dalam passing by reference, actual parameter yang kita kirimkan adalah alamat memori (memory address dari variable yang diinginkan), dan formal parameternya merupakan pointer yang menunjuk ke alamat memori tersebut. Dengan demikian perubahan yang dilakukan akan mempengaruhi nilai pada alamat yang ditunjuk (yakni alamat x dan y yang merupakan pemanggilnya).

Dengan demikian bila program di atas dieksekusi, output yang akan dihasilkan adalah“x = 10 dan y = 7”.