Perbezaan antara penunjuk dan rujukan

Perbezaan antara penunjuk dan rujukan

Perbezaan utama - rujukan penunjuk vs
 

Sebelum membincangkan perbezaan antara penunjuk dan rujukan, mari kita lihat terlebih dahulu makna kedua -dua istilah ini secara ringkas. Dalam program, data menduduki memori. Lokasi memori yang tepat di mana data diletakkan pada masa pelaksanaan harus diketahui untuk mengaksesnya. Pembolehubah penunjuk dan pembolehubah rujukan digunakan untuk mengakses data ini dan memanipulasi alamat memori yang mereka ada. Iaitu, kedua -dua petunjuk dan rujukan boleh digunakan untuk merujuk kepada objek secara tidak langsung. Mereka pada dasarnya memegang alamat memori sebagai nilai mereka. The Perbezaan utama antara penunjuk dan rujukan ialah Penunjuk adalah pemboleh ubah yang menyimpan alamat lokasi memori pembolehubah lain sementara a Rujukan adalah pemboleh ubah yang merujuk kepada pemboleh ubah lain. Kedua -dua mekanisme, The penunjuk dan rujukan, mempunyai sintaks dan penggunaan yang berbeza.

Apa itu penunjuk?

Penunjuk adalah objek bahasa pengaturcaraan yang menyimpan alamat memori nilai dalam memori pengkomputeran.

Dalam sintaks C ++;

int i = 5;

int *ptr = & i;

Baris pertama mentakrifkan pembolehubah yang diasaskan dengan nilai 5. Baris kedua mentakrifkan penunjuk ke alamat memori pembolehubah. Di sini, 'Ptr' diisytiharkan sebagai objek jenis 'penunjuk ke int' yang nilai awalnya adalah alamat objek i. Pada dasarnya PTR pembolehubah mata kepada saya dengan menyimpan alamat memorinya.

Mendapatkan nilai yang disimpan di lokasi memori dipanggil dereferencing. Pengendali * digunakan untuk membantah penunjuk. Selepas pengisytiharan selesai, ungkapan tidak langsung *PTR dereferences PTR untuk merujuk kepada i.

Untuk menukar nilai i, berikut tugasan boleh digunakan;

*ptr = 20;

Petunjuk boleh ditugaskan semula untuk merujuk kepada objek yang berbeza juga.

A penunjuk null adalah jenis penunjuk khas. Penunjuk null sering dilambangkan oleh 0 atau batal dan tidak menunjuk kepada apa -apa.  Adalah amalan yang baik untuk menggunakan penunjuk null dalam kes tidak mempunyai alamat yang tepat untuk diberikan kepada penunjuk. Tugasan ini boleh digunakan dalam operasi dan syarat logik.

Petunjuk boleh digunakan untuk menyimpan dan menguruskan alamat memori yang diperuntukkan secara dinamik. Pelaksanaan dan mengawal struktur data seperti susunan, beratur, dan senarai boleh dibuat dengan cekap dengan penggunaan petunjuk. Sebagai contoh, barisan mungkin mempunyai dua petunjuk; penunjuk kepala dan penunjuk ekor. Petunjuk juga boleh digunakan untuk lulus pembolehubah dengan alamat mereka, yang membolehkan nilai ditukar. Secara langsung memanipulasi memori atau peranti memori memori juga boleh dikendalikan dengan menggunakan petunjuk.

Petunjuk membenarkan kedua -dua akses yang dilindungi dan tidak dilindungi ke memori yang ditangani. Oleh itu, langkah berjaga -jaga yang perlu diambil untuk mengesahkan bahawa kandungan penunjuk adalah sah. Jika tidak, dereferencing penunjuk dengan alamat memori yang tidak sah mungkin menyebabkan program itu terhempas.

Petunjuk disokong dalam bahasa seperti bahasa C, C ++, Pascal dan banyak perhimpunan.

Penunjuk a menunjuk ke alamat memori yang berkaitan dengan pembolehubah b.

Apa itu rujukan?

Rujukan hanyalah satu Pengenal alternatif untuk nilai yang disimpan dalam ingatan. Ia membolehkan program secara tidak langsung mengakses datum tertentu.

Dalam sintaks C ++;

int i = 5;

int & ref = i;

Baris pertama mentakrifkan pembolehubah yang diasaskan dengan nilai 5. Baris kedua mengisytiharkan 'ref' sebagai objek jenis 'rujukan kepada int' yang merujuk kepada i. Rujukan berbeza dari data itu sendiri memandangkan rujukan dilaksanakan sebagai alamat fizikal datum tertentu yang disimpan dalam ingatan.

Setelah ditakrifkan, rujukan tidak dapat ditugaskan semula. Rujukan selalu merujuk kepada objek yang dimulakannya. Dalam tugasan berikut, ref masih merujuk kepada saya, tetapi nilai sekarang 20.

ref = 20;

Menurut contoh di atas, rujukan dereferencing tidak memerlukan mana -mana pengendali.

Rujukan boleh digunakan apabila pemboleh ubah selalu merujuk kepada objek. Ini kerana, tidak seperti petunjuk, rujukan tidak boleh dibatalkan dan mesti sentiasa diberikan pada permulaan. Oleh kerana rujukan mesti selalu merujuk kepada beberapa objek, menjadikan pembolehubah sedemikian rujukan memastikan program itu berfungsi dengan cekap dan betul. Memandangkan itu, tidak ada rujukan nol, kesahihan pemboleh ubah rujukan tidak perlu diuji.

Pembolehubah rujukan boleh digunakan untuk lulus data besar dengan cekap sebagai argumen kepada prosedur. Rujukan juga digunakan dalam berkongsi data besar di antara kawasan kod yang berbeza kerana setiap kod terus merujuk kepada data.

Bahasa pengaturcaraan seperti C ++, Java, Python, Perl, PHP, Ruby, dll. Rujukan sokongan.

Apakah perbezaan antara penunjuk dan rujukan?

Definisi penunjuk dan rujukan

Penunjuk: Penunjuk adalah alamat memori objek yang disimpan dalam memori pengkomputeran.

Rujukan: Rujukan adalah pengenal alternatif atau alias untuk objek.

Ciri -ciri penunjuk dan rujukan

Perisytiharan

Penunjuk: Penunjuk diisytiharkan dengan pengendali *.

Rujukan: Rujukan diisytiharkan dengan & operator.

Dereferencing

Penunjuk: Pemboleh ubah penunjuk memerlukan * pengendali untuk dibebaskan.

Rujukan: Pemboleh ubah rujukan tidak memerlukan pengendali untuk dibebaskan.

Memulakan

Penunjuk:  Petunjuk boleh dimulakan ke batal. Pembolehubah sedemikian dipanggil penunjuk null.

Rujukan: Rujukan tidak dapat diinisialisasi ke batal. Tidak ada perkara seperti rujukan null. Rujukan mesti selalu merujuk kepada objek.

Penugasan semula

Penunjuk: Pemboleh ubah penunjuk boleh ditugaskan semula untuk merujuk kepada objek yang berbeza.

Rujukan: Pemboleh ubah rujukan tidak dapat ditugaskan semula. Ia selalu merujuk kepada objek yang dimulakannya.

Penggunaan

Penunjuk: Pembolehubah penunjuk harus digunakan apabila kemungkinan merujuk kepada apa -apa yang wujud atau ketika diperlukan untuk merujuk kepada perkara yang berbeza pada waktu yang berlainan.

Rujukan: Pembolehubah rujukan harus digunakan apabila selalu ada objek untuk dirujuk dan kapan tidak dikehendaki menggunakan pemboleh ubah rujukan itu untuk merujuk kepada apa -apa selain objek tersebut.

Permohonan Penggunaan

Penunjuk: Pembolehubah penunjuk boleh digunakan untuk melaksanakan algoritma dan struktur data.

Rujukan: Pembolehubah rujukan boleh digunakan dalam parameter fungsi, dan jenis pulangan menentukan antara muka yang berguna.

Bahasa terpakai:

Penunjuk: Bahasa pengaturcaraan seperti c, c ++, pascal dan banyak bahasa pemasangan menyokong penunjuk.

Rujukan: Bahasa pengaturcaraan seperti C ++, Java, Python, Perl, PHP, Ruby, dll. Rujukan sokongan.

Image Courtesy: "Pointers" oleh fail ini dibuat oleh pengguna: sventranslation.Kerja sendiri.Imej vektor ini dibuat dengan inkscape.(CC BY-SA 3.0) melalui Commons -