Dalam ilmu komputer dan pemrograman, referensi (bahasa Inggris: reference) 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

sunting

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

sunting

C++

sunting

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>

int main() {
    int asli = 10;
    int &ref = asli; // 'ref' kini menjadi alias dari 'asli'

    ref = 20; // Mengubah nilai 'ref' otomatis mengubah nilai 'asli'

    std::cout << asli; // Output: 20
    return 0;
}

Java, C#, dan Python

sunting

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

sunting
  • 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.

Lihat pula

sunting

Referensi

sunting
  1. ^ Black, Paul E. "reference". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.

📚 Artikel Terkait di Wikipedia

Penunjuk (ilmu komputer)

penunjuk ini sering direpresentasikan dengan kata kunci seperti NULL, nullptr, nil, atau None. Penunjuk nol biasanya digunakan untuk menginisialisasi