Perbezaan Antara Pointer dan Rujukan | Rujukan vs Pointer

Anonim

Perbezaan Utama - Rujukan vs Pointer

Sebelum membincangkan perbezaan antara penunjuk dan rujukan, mari kita mulailah melihat makna kedua-dua istilah secara ringkas. Dalam program, data menduduki ingatan. Lokasi memori yang tepat di mana data dimasukkan ke dalam masa pelaksanaan harus diketahui untuk mengaksesnya. Pemboleh ubah penunjuk dan pembolehubah rujukan digunakan untuk mengakses data ini dan memanipulasi alamat ingatan mereka. Iaitu, kedua-dua petunjuk dan rujukan boleh digunakan untuk merujuk objek secara tidak langsung. Mereka pada dasarnya memegang alamat memori sebagai nilai mereka. Perbezaan utama antara penunjuk dan sebutan adalah bahawa penunjuk adalah pembolehubah yang menyimpan alamat lokasi memori pembolehubah lain manakala rujukan adalah pembolehubah yang merujuk kepada pemboleh ubah yang lain. Kedua mekanisme, pointer dan rujukan, mempunyai sintaks dan penggunaan yang berbeza .

Apakah penunjuk?

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

Dalam sintaks C ++;

int i = 5;

int * ptr = & i;

Baris pertama mentakrifkan pemboleh ubah yang dimulakan dengan nilai 5. Baris kedua mentakrifkan penuding ke alamat memori pembolehubah. Di sini, 'ptr' diisytiharkan sebagai objek jenis 'penunjuk ke int' yang nilai awal ialah alamat objek i. Pada asasnya, titik pembolehubah ptr kepada saya dengan menyimpan alamat ingatannya.

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

Untuk menukar nilai i, selepas tugasan boleh digunakan;

* ptr = 20;

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

A null pointer adalah jenis penunjuk khas. Penunjuk null sering dilambangkan oleh 0 atau null dan tidak memberi apa-apa. Amalan yang baik untuk menggunakan penunjuk null dalam hal tidak mempunyai alamat yang tepat untuk ditugaskan kepada penuding. Tugasan ini boleh digunakan dalam operasi dan syarat logik.

Penunjuk boleh digunakan untuk menyimpan dan menguruskan alamat memori dinamik yang diperuntukkan . Pelaksanaan dan pengawalan struktur data seperti susunan, beratur, dan senarai dapat dibuat dengan efisien dengan menggunakan petunjuk. Misalnya, baris gilir mungkin mempunyai dua petunjuk; penuding kepala dan penunjuk ekor.Penunjuk juga boleh digunakan untuk melewati pemboleh ubah oleh alamat mereka, yang akan membolehkan nilai diubah. Alat manipulasi memori atau memori yang dipetakan langsung juga boleh dikendalikan dengan menggunakan petunjuk.

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

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

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

Apakah Rujukan?

Rujukan hanyalah pengimejan alternatif untuk nilai yang disimpan dalam memori . Ia membolehkan program untuk secara tidak langsung mengakses datum tertentu.

Dalam sintaks C ++;

int i = 5;

int & ref = i;

Baris pertama mentakrifkan pemboleh ubah yang dimulakan dengan nilai 5. Baris kedua mengisytiharkan 'ref' sebagai objek rujukan 'jenis int' yang merujuk kepada i. Rujukan adalah berbeza daripada data itu sendiri memandangkan suatu rujukan dilaksanakan sebagai alamat fizikal datum tertentu yang disimpan dalam ingatan.

Setelah ditakrifkan, rujukan tidak boleh ditugaskan semula nilai baru. Rujukan selalu merujuk kepada objek yang mana ia diasaskan. Dalam tugasan berikut, ref masih merujuk kepada i, tetapi nilai kini 20.

ref = 20;

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

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

Pemboleh ubah rujuk boleh digunakan untuk lulus data besar sebagai argumen kepada prosedur . Rujukan juga digunakan untuk berkongsi data besar di antara kawasan kod berbeza kerana setiap kod menyimpan rujukan kepada data.

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

Apakah perbezaan antara Pointer dan Rujukan?

Definisi Pointer dan Rujukan

Pointer: Penunjuk ialah alamat memori objek yang tersimpan dalam memori pengkomputeran.

Rujukan: Rujukan adalah pengecam alternatif atau alias untuk objek.

Ciri-ciri Penunjuk dan Rujukan

Perisytiharan

Pointer: Penuding dinyatakan dengan operator *.

Rujukan: Rujukan diisytiharkan dengan & operator.

Dereferencing

Pointer: Pembolehubah penunjuk memerlukan operator * untuk dereferenced.

Rujukan: Variabel rujukan tidak memerlukan pengendali untuk dereferenced.

Memulakan

Penunjuk: Penunjuk boleh diinisialisasi menjadi null.Pemboleh ubah sedemikian dipanggil penunjuk null.

Rujukan: Rujukan tidak boleh diisytiharkan kepada null. Tidak ada perkara seperti rujukan null. Rujukan mestilah merujuk kepada objek.

Reassignments

Pointer: Pembolehubah penunjuk boleh ditugaskan semula untuk merujuk kepada objek yang berbeza.

Rujukan: Variabel rujukan tidak boleh ditugaskan semula. Ia sentiasa merujuk kepada objek yang mana ia telah diasaskan.

Kegunaan

Pointer: Pemboleh ubah penunjuk harus digunakan apabila kemungkinan merujuk kepada apa-apa yang ada atau ketika diperlukan untuk merujuk kepada hal-hal yang berbeda pada waktu yang berlainan.

Rujukan: Pemboleh ubah rujuk hendaklah digunakan apabila sentiasa ada objek untuk dirujuk dan apabila ia tidak dikehendaki menggunakan pembolehubah rujukan untuk merujuk kepada benda lain selain objek tersebut.

Penggunaan Aplikasi

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

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

Bahasa-bahasa yang digunakan:

Pointer: Bahasa pengaturcaraan seperti C, C ++, Pascal dan banyak bahasa sokongan bahasa penganjur.

Rujukan: Bahasa pengaturcaraan seperti rujukan C ++, Java, Python, Perl, PHP, Ruby, dan lain-lain.

Image Courtesy: "Pointer" oleh Fail ini dibuat oleh Pengguna: SvenTranslation. Kerja sendiri. Imej vektor ini dicipta dengan Inkscape. (CC BY-SA 3. 0) melalui Commons -