Sebelum membahas perbedaan antara pointer dan referensi, mari kita lihat pertama -tama arti dari dua istilah ini secara singkat. Dalam suatu program, data menempati memori. Lokasi memori yang tepat di mana data ditempatkan pada waktu eksekusi harus diketahui untuk mengaksesnya. Variabel Pointer Dan variabel referensi digunakan untuk mengakses data ini dan memanipulasi alamat memori yang mereka hadapi. Yaitu, baik pointer dan referensi dapat digunakan untuk merujuk ke objek secara tidak langsung. Mereka pada dasarnya memegang alamat memori sebagai nilainya. Itu perbedaan utama antara penunjuk dan referensi adalah itu Pointer adalah variabel yang menyimpan alamat lokasi memori dari variabel lain sementara a Referensi adalah variabel yang mengacu pada variabel lain. Dua mekanisme, itu penunjuk dan referensi, memiliki sintaks dan penggunaan yang berbeda.
Pointer adalah objek bahasa pemrograman yang menyimpan alamat memori nilai di memori komputasi.
int i = 5;
int *ptr = & i;
Baris pertama mendefinisikan variabel yang diinisialisasi dengan nilai 5. Baris kedua mendefinisikan pointer ke alamat memori variabel. Di sini, 'PTR' dinyatakan sebagai objek tipe 'pointer to int' yang nilai awalnya adalah alamat objek i. Pada dasarnya variabel PTR poin ke I dengan menyimpan alamat memorinya.
Memperoleh nilai yang disimpan di lokasi memori dipanggil Dereferensi. Operator * digunakan untuk mendereferensi pointer. Setelah deklarasi selesai, ekspresi tidak langsung *ptr dereferences ptr untuk merujuk ke i.
Untuk mengubah nilai i, penugasan berikut dapat digunakan;
*ptr = 20;
Pointer dapat dipindahkan untuk merujuk ke berbagai objek juga.
A penunjuk nol adalah jenis penunjuk khusus. Pointer nol sering dilambangkan dengan 0 atau nol dan tidak menunjukkan apa -apa. Itu adalah praktik yang baik untuk menggunakan pointer nol jika tidak memiliki alamat yang tepat untuk ditugaskan ke pointer. Tugas ini dapat digunakan dalam operasi dan kondisi logis.
Pointer bisa digunakan untuk menyimpan dan mengelola alamat memori yang dialokasikan secara dinamis. Implementasi dan pengendalian struktur data seperti tumpukan, antrian, dan daftar dapat dibuat efisien dengan penggunaan pointer. Misalnya, antrian mungkin memiliki dua pointer; penunjuk kepala dan penunjuk ekor. Pointer juga dapat digunakan untuk melewati variabel dengan alamatnya, yang akan memungkinkan nilainya diubah. Memanipulasi secara langsung memori atau perangkat yang dipetakan memori juga dapat ditangani dengan menggunakan pointer.
Pointer memungkinkan akses yang dilindungi dan tidak terlindungi ke memori yang ditangani. Oleh karena itu, tindakan pencegahan yang diperlukan harus diambil untuk memverifikasi bahwa konten penunjuk itu valid. Kalau tidak, dereferencing pointer dengan alamat memori yang tidak valid dapat menyebabkan program macet.
Pointer didukung dalam bahasa seperti C, C ++, Pascal dan banyak bahasa perakitan.
Penunjuk A menunjuk ke alamat memori yang terkait dengan variabel B.
Referensi hanyalah sebuah Pengidentifikasi alternatif untuk nilai yang disimpan dalam memori. Ini memungkinkan program untuk secara tidak langsung mengakses datum tertentu.
int i = 5;
int & ref = Saya;
Baris pertama mendefinisikan variabel yang diinisialisasi dengan nilai 5. Baris kedua menyatakan 'ref' sebagai objek jenis 'referensi ke int' yang mengacu pada i. Referensi berbeda dari data itu sendiri mengingat bahwa referensi diimplementasikan sebagai alamat fisik datum tertentu yang disimpan dalam memori.
Setelah didefinisikan, referensi tidak dapat dipindahkan nilai baru. Referensi selalu mengacu pada objek yang diinisialisasi. Dalam penugasan berikut, Ref masih mengacu pada i, tetapi nilainya sekarang 20.
Ref = 20;
Menurut contoh di atas, referensi dereferencing tidak memerlukan operator apa pun.
Referensi dapat digunakan saat variabel selalu merujuk pada suatu objek. Ini karena, tidak seperti pointer, referensi tidak bisa nol dan harus selalu ditugaskan pada inisialisasi. Karena referensi harus selalu merujuk pada beberapa objek, membuat variabel seperti itu referensi memastikan program akan bekerja secara efisien dan benar. Mengingat bahwa, tidak ada referensi nol, validitas variabel referensi tidak harus diuji.
Variabel referensi bisa digunakan untuk secara efisien meneruskan data besar sebagai argumen untuk prosedur. Referensi juga digunakan dalam berbagi data besar antara area kode yang berbeda karena setiap kode menyimpan referensi ke data.
Bahasa pemrograman seperti C ++, Java, Python, Perl, PHP, Ruby, dll. Dukungan referensi.
Pointer: Pointer adalah alamat memori objek yang disimpan dalam memori komputasi.
Referensi: Referensi adalah pengidentifikasi alternatif atau alias untuk suatu objek.
Pointer: Pointer dinyatakan dengan * operator.
Referensi: Referensi dinyatakan dengan operator &.
Pointer: Variabel pointer mengharuskan operator *.
Referensi: Variabel referensi tidak memerlukan operator untuk diereferenced.
Pointer: Pointer dapat diinisialisasi ke nol. Variabel seperti itu disebut nol pointer.
Referensi: Referensi tidak dapat diinisialisasi ke null. Tidak ada yang namanya referensi nol. Referensi harus selalu merujuk pada suatu objek.
Pointer: Variabel pointer dapat dipindahkan untuk merujuk ke berbagai objek.
Referensi: Variabel referensi tidak dapat ditanyai. Itu selalu mengacu pada objek yang diinisialisasi.
Pointer: Variabel pointer harus digunakan ketika kemungkinan merujuk pada tidak ada yang ada atau ketika diperlukan untuk merujuk pada hal yang berbeda pada waktu yang berbeda.
Referensi: Variabel referensi harus digunakan ketika akan selalu ada objek untuk dirujuk dan kapan tidak diperlukan untuk menggunakan variabel referensi untuk merujuk ke hal lain selain objek itu.
Pointer: Variabel pointer dapat digunakan untuk mengimplementasikan algoritma dan struktur data.
Referensi: Variabel referensi dapat digunakan dalam parameter fungsi, dan tipe pengembalian menentukan antarmuka yang berguna.
Pointer: Bahasa pemrograman seperti C, C ++, Pascal dan banyak bahasa perakitan mendukung petunjuk.
Referensi: Bahasa pemrograman seperti C ++, Java, Python, Perl, PHP, Ruby, dll. Dukungan referensi.
Gambar milik: “Pointers” dengan file ini dibuat oleh pengguna: SVentRanslation.Pekerjaan sendiri.Gambar vektor ini dibuat dengan Inkscape.(CC BY-SA 3.0) via commons -