Dalam ilmu komputer dan pemrograman, referensi (bahasa Inggris:referencecode: en is deprecated ) adalah objek atau tipe data abstrak yang bertindak sebagai alias, label, atau penanda bagi data atau objek lain yang tersimpan di dalam memori komputer. Referensi memungkinkan sebuah program untuk mengakses dan memanipulasi data yang sama dari berbagai bagian kode yang berbeda tanpa harus menyalin seluruh data tersebut secara fisik.[1]
Berbeda dengan penunjuk (pointer) tradisional, referensi dirancang dengan tingkat abstraksi yang lebih tinggi dan aman. Pada kebanyakan bahasa pemrograman modern, nilai numerik dari alamat memori asli yang diacu oleh sebuah referensi disembunyikan sepenuhnya dari pemrogram untuk mencegah manipulasi ilegal.
Perbedaan dengan penunjuk
Meskipun referensi dan penunjuk sama-sama digunakan untuk merujuk ke data lain di memori, keduanya memiliki perbedaan karakteristik yang mendasar dalam implementasinya:
Karakteristik
Penunjuk (Pointer)
Referensi (Reference)
Akses Alamat Memori
Mengonversi dan mengekspos alamat memori fisik secara langsung sebagai angka mentah.
Menyembunyikan alamat memori fisik di balik lapisan abstraksi pengaman.
Aritmetika
Mendukung aritmetika penunjuk (seperti menambah atau mengurangi alamat indeks).
Tidak mendukung operasi aritmetika sama sekali.
Sintaksis Penggunaan
Memerlukan operator khusus untuk melakukan dereferensi (seperti operator bintang * pada bahasa C).
Bersifat implisit; program otomatis melakukan dereferensi saat nama variabel digunakan.
Nilai Kosong (Null)
Dapat bernilai kosong (seperti NULL atau nullptr) dan tidak menunjuk ke mana pun.
Umumnya tidak boleh kosong dan harus langsung terikat pada objek yang valid saat dideklarasikan.
Implementasi pada bahasa pemrograman
C++
Dalam C++, referensi dideklarasikan menggunakan operator ampersan (&). Setelah diinisialisasi, referensi tersebut terikat secara permanen pada variabel targetnya dan tidak dapat dialihkan ke variabel lain.
#include<iostream>intmain(){intasli=10;int&ref=asli;// 'ref' kini menjadi alias dari 'asli'ref=20;// Mengubah nilai 'ref' otomatis mengubah nilai 'asli'std::cout<<asli;// Output: 20return0;}
Java, C#, dan Python
Bahasa-bahasa pemrograman tingkat tinggi seperti Java, C#, dan Python sepenuhnya menghilangkan fitur penunjuk manual dan menggantinya dengan konsep referensi objek secara bawaan.
Ketika seorang pemrogram menulis perintah Objek objekBaru = new Objek() di Java, variabel objekBaru sebenarnya adalah sebuah referensi yang menyimpan lokasi objek tersebut di memori heap. Pemindahan atau penugasan variabel referensi (seperti objekA = objekB) tidak menyalin isi objeknya, melainkan membuat kedua variabel tersebut merujuk pada objek tunggal yang sama. Manajemen daur hidup memori referensi ini diatur sepenuhnya secara otomatis oleh sistem pengumpul sampah (garbage collector).
Keuntungan
Keamanan Memori (Memory Safety): Mencegah terjadinya kerusakan memori akibat kesalahan hitung alamat atau manipulasi data acak.
Optimalisasi Performa: Memungkinkan pengiriman data berukuran besar ke dalam fungsi tanpa memicu beban komputasi penyalinan data (mekanisme pemanggilan berdasarkan rujukan atau pass-by-reference).
Sintaksis yang Bersih: Membantu pemrogram menulis kode yang lebih ringkas karena tidak perlu menyisipkan banyak operator dereferensi manual.
↑Black, Paul E. "reference". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.