Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Pointer dan Referensi

"Penunjuk" dan "referensi" keduanya digunakan untuk menunjuk atau merujuk variabel lain. Tapi, perbedaan mendasar di antara keduanya adalah bahwa variabel pointer menunjuk ke variabel yang lokasi ingatannya tersimpan di dalamnya. Variabel referensi adalah alias untuk variabel yang ditugaskan padanya. Grafik perbandingan di bawah ini mengeksplorasi perbedaan lain antara penunjuk dan referensi.

Grafik perbandingan

Dasar untuk perbandinganPointerReferensi
DasarPointer adalah alamat memori variabel.Referensi adalah alias untuk suatu variabel.
KembaliVariabel pointer mengembalikan nilai yang terletak di alamat yang disimpan dalam variabel pointer yang didahului oleh tanda pointer '*'.Variabel referensi mengembalikan alamat variabel yang didahului oleh tanda referensi '&'.
Operator*, ->&
Referensi NullVariabel pointer dapat merujuk ke NULL.Variabel referensi tidak pernah bisa merujuk ke NULL.
InisialisasiPointer yang tidak diinisialisasi dapat dibuat.Referensi yang tidak diinisialisasi tidak pernah dapat dibuat.
Waktu InisialisasiVariabel pointer dapat diinisialisasi pada setiap titik waktu dalam program.Variabel referensi hanya dapat diinisialisasi pada saat pembuatannya.
Inisialisasi ulangVariabel pointer dapat diinisialisasi ulang sebanyak yang diperlukan.Variabel referensi tidak pernah dapat diinisialisasi ulang dalam program.

Definisi Pointer

"Pointer" adalah variabel yang menyimpan lokasi memori variabel lain. Operator yang digunakan oleh variabel pointer adalah * dan ->. Deklarasi variabel pointer berisi tipe data dasar diikuti oleh tanda '*' dan nama variabel.

 ketik * var_name; 

Mari kita pahami pointer dengan bantuan contoh.

 int a = 4; int * ptr = & a; Cout < 

Di sini, kita memiliki variabel integer a dan, ptr variabel pointer yang menyimpan alamat variabel a.

Aritmatika Pointer

Variabel pointer dapat dioperasikan dengan dua operator aritmatika yang "penambahan" dan "pengurangan". Penambahan tersebut disebut "increment", dan pengurangannya disebut sebagai "decrement". Ketika variabel pointer bertambah, itu menunjuk ke lokasi memori dari variabel berikutnya dari tipe dasarnya. Ketika variabel pointer dikurangi, itu menunjuk ke lokasi memori dari variabel sebelumnya dari tipe dasarnya. Oleh karena itu, sebuah array dapat diakses secara efisien oleh variabel pointer.

Multiple Indirection

Pointer menunjuk ke variabel pointer lain yang menunjuk ke nilai target. Pointer semacam ini selalu diinisialisasi dengan alamat variabel pointer lain. Deklarasi pointer ke pointer adalah sebagai berikut.

 ketik ** var_name; 

Mari kita pelajari dengan sebuah contoh.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; Cout < 

Pointer fungsi

Seperti yang kita ketahui bahwa suatu fungsi bukan variabel, masih memiliki lokasi memori, yang dapat ditugaskan ke variabel pointer. Setelah pointer menunjuk ke suatu fungsi, maka fungsi tersebut bisa dipanggil dengan fungsi pointer itu.

Poin penting yang perlu diingat tentang pointer.

  • Variabel pointer dapat dibuat tanpa inisialisasi, dan dapat diinisialisasi di mana saja dalam program.
  • Variabel pointer dapat diinisialisasi ulang ke variabel lain.
  • Variabel pointer dapat merujuk ke NULL.

Definisi Referensi

Variabel referensi digunakan untuk merujuk pada variabel yang ditugaskan ke variabel referensi itu. Operator yang digunakan oleh variabel referensi adalah '&'. Deklarasi variabel referensi berisi tipe dasar diikuti dengan tanda '&' dan kemudian nama variabel.

 ketik & refer_var_name = var_ name; 

Di sini, jenisnya adalah tipe data, operator & mengonfirmasi bahwa itu adalah variabel referensi. Refer_var_name adalah nama variabel referensi. The var_name adalah nama variabel, yang kita inginkan untuk referensi variabel.

Mari kita memahami variabel referensi dengan bantuan contoh.

 int a = 4; int & b = a; // b merujuk ke ab = 6; // sekarang a = 6 

Di sini, variabel tipe int diberi nilai 4. Variabel referensi diberikan variabel a, yaitu b adalah alias dari a. Sekarang, ketika kita menetapkan nilai lain ke b, kita memodifikasi nilai a. Oleh karena itu, dapat dikatakan bahwa perubahan yang dilakukan pada variabel referensi juga akan terjadi pada variabel yang dirujuk oleh variabel referensi tersebut.

Poin yang paling penting adalah bahwa variabel referensi harus diinisialisasi pada saat pembuatannya. Setelah variabel referensi diinisialisasi dengan variabel, tidak dapat diinisialisasi ulang untuk merujuk variabel lain. Saat Anda menetapkan nilai ke variabel referensi, Anda menetapkan nilai itu ke variabel yang ditunjuk oleh variabel referensi. Variabel referensi tidak pernah bisa merujuk ke NULL. Aritmatika tidak dapat dilakukan pada variabel referensi.

Variabel referensi dapat digunakan dalam tiga cara:

  • Sebagai nilai pengembalian fungsi.
  • Sebagai parameter fungsi.
  • Sebagai referensi yang berdiri sendiri.

Perbedaan Kunci Antara Pointer dan Referensi

  1. Referensi seperti membuat nama lain untuk merujuk variabel sehingga dapat dirujuk dengan nama yang berbeda. Di sisi lain, pointer hanyalah alamat memori dari suatu variabel.
  2. Variabel pointer jika diawali dengan '*' mengembalikan nilai variabel yang alamatnya disimpan dalam pointer yang layak. Variabel referensi ketika diawali oleh '&' mengembalikan alamat variabel itu.
  3. Operator pointer adalah * dan -> sedangkan, operator referensi adalah &.
  4. Variabel penunjuk jika tidak membawa alamat variabel apa pun yang ditunjukkannya menjadi nol. Di sisi lain, variabel referensi tidak pernah bisa merujuk ke Null.
  5. Anda selalu dapat membuat variabel pointer unitialized, tetapi kami membuat referensi ketika kami membutuhkan alias dari beberapa variabel sehingga Anda tidak pernah dapat membuat referensi unitialize.
  6. Anda dapat menginisialisasi ulang pointer tetapi setelah Anda menginisialisasi, Anda tidak dapat menginisialisasi ulang lagi.
  7. Anda dapat membuat pointer kosong dan menginisialisasi kapan saja tetapi Anda harus menginisialisasi referensi ketika Anda membuat referensi.

catatan:

Java tidak mendukung pointer.

Kesimpulan

Pointer dan referensi keduanya digunakan untuk menunjuk atau merujuk variabel lain. Namun keduanya berbeda dalam penggunaan dan implementasinya.

Top