رسم بياني للمقارنة
أساس للمقارنة | مؤشر | مرجع |
---|---|---|
الأساسية | المؤشر هو عنوان الذاكرة لمتغير. | المرجع هو اسم مستعار لمتغير. |
عائدات | يقوم متغير المؤشر بإرجاع القيمة الموجودة في العنوان المخزن في متغير مؤشر والذي يسبقه علامة المؤشر '*'. | يُرجع المتغير المرجعي عنوان المتغير الذي تسبقه الإشارة المرجعية "&". |
العاملين | * ، -> | و |
مرجع فارغ | يمكن أن يشير متغير المؤشر إلى NULL. | لا يمكن أبدا الرجوع إلى متغير المرجع إلى NULL. |
التهيئة | يمكن إنشاء مؤشر غير مهيأ. | لا يمكن أبدًا إنشاء مرجع غير مهيأ. |
وقت التهيئة | يمكن تهيئة متغير المؤشر في أي وقت من الأوقات في البرنامج. | لا يمكن تهيئة متغير المرجع إلا في وقت إنشائه. |
Reinitialization | يمكن إعادة تهيئة متغير المؤشر عدة مرات حسب الحاجة. | لا يمكن إعادة تغيير المتغير المرجعي مرة أخرى في البرنامج. |
تعريف المؤشر
"المؤشر" هو متغير يحتفظ بموقع الذاكرة لمتغير آخر. عوامل التشغيل المستخدمة بواسطة متغير المؤشر هي * و ->. يحتوي تعريف متغير المؤشر على نوع البيانات الأساسي متبوعًا بعلامة '*' واسم المتغير.
اكتب *
دعونا نفهم المؤشر بمساعدة مثال.
int a = 4؛ int * ptr = & a؛ cout <هنا ، لدينا متغير عدد صحيح a و ptr مؤشر متغير الذي يخزن عنوان المتغير a.
مؤشر الحساب
يمكن تشغيل متغير المؤشر مع عاملين حسابيين هما "الجمع" و "الطرح". يُشار إلى الإضافة باسم "الزيادة" ، ويشار إلى الطرح باسم "decrement". كلما زاد مؤشر المتغير ، يشير إلى موقع الذاكرة للمتغير التالي من نوعه الأساسي. عندما يتغير مؤشر المتغير ، فإنه يشير إلى موقع الذاكرة للمتغير السابق لنوعه الأساسي. وبالتالي ، يمكن الوصول إلى مصفوفة بكفاءة بواسطة متغير مؤشر.
إعادة توجيه متعددة
يشير المؤشر إلى متغير المؤشر الآخر الذي يشير إلى القيمة المستهدفة. يتم دائمًا تهيئة هذا النوع من المؤشر مع عنوان متغير مؤشر آخر. تعريف مؤشر إلى مؤشر كما يلي.
النوع **دعونا دراسة ذلك مع مثال.
int a = 4؛ int * ptr1 = & a؛ int ** ptr2 = & ptr1؛ cout <مؤشر وظيفة
كما نعلم أن الدالة ليست متغيرًا ، فلا يزال لها موقع ذاكرة ، يمكن تعيينه إلى متغير مؤشر. عندما يشير المؤشر إلى وظيفة ، يمكن استدعاء الدالة بمؤشر الدالة هذا.
النقاط الهامة التي يجب تذكرها حول المؤشر.
- يمكن إنشاء متغير المؤشر دون التهيئة الخاصة به ، ويمكن تهيئته في أي مكان في البرنامج.
- يمكن إعادة تهيئة متغير المؤشر إلى متغير آخر.
- يمكن أن يشير متغير المؤشر إلى NULL.
تعريف المرجع
يتم استخدام المتغير المرجعي للإشارة إلى المتغير الذي تم تعيينه للمتغير المرجعي. المشغل المستخدم بواسطة المتغير المرجعي هو '&'. يحتوي تعريف متغير المرجع على نوع أساسي متبوعًا بعلامة "&" ثم اسم المتغير.
type & refer_var_name = var_ name؛هنا ، النوع هو نوع البيانات ، ويؤكد عامل التشغيل أنه متغير مرجع. refer_var_name هو اسم المتغير المرجعي. الاسم var_name هو اسم المتغير الذي نريد أن يشير إليه المتغير المرجعي.
دعونا نفهم متغير المرجع بمساعدة مثال.
int a = 4؛ int & b = a؛ // b يشير إلى ab = 6؛ // now a = 6هنا ، يتم تعيين متغير من نوع int قيمة 4. يتم تعيين متغير المرجع المتغير a ، أي b هو اسم مستعار لـ a. الآن ، عندما نقوم بتعيين قيمة أخرى إلى b ، نقوم بتعديل قيمة. ومن ثم ، يمكن القول أن التغييرات التي أجريت على متغير مرجعي ستحدث أيضاً في المتغير المشار إليه بواسطة متغير المرجع هذا.
النقطة الأكثر أهمية هي أن المتغير المرجعي يجب أن يتم تهيئته في وقت إنشائه. وبمجرد تهيئة المتغير المرجعي مع متغير ، لا يمكن إعادة تهيئته للإشارة إلى متغير آخر. في اللحظة التي تقوم فيها بتعيين قيمة للمتغير المرجعي ، تقوم بتعيين هذه القيمة إلى متغير يشير إليه متغير مرجع. لا يمكن أبدا الرجوع إلى متغير المرجع إلى NULL. لا يمكن إجراء الحساب على متغير المرجع.
يمكن استخدام المتغير المرجعي بثلاث طرق:
- كدالة قيمة الإرجاع.
- كمعلمة وظيفة.
- كمرجع مستقل.
الاختلافات الرئيسية بين المؤشر والمرجع
- يشبه المراجع إنشاء اسم آخر للإشارة إلى متغير بحيث يمكن الإشارة إليه بأسماء مختلفة. من ناحية أخرى ، يكون المؤشر مجرد عنوان ذاكرة لمتغير.
- مؤشر المتغير إذا كان مسبوقًا بـ "*" يعرض قيمة متغير يتم تخزين عنوانه في المؤشر غير قابل للتغيير. المتغير المرجعي عند البدء بعلامة "&" يرجع عنوان ذلك المتغير.
- مشغلي المؤشر * و -> بينما ، المشغل المرجعي هو &.
- متغير مؤشر إذا لم يحمل عنوان أي متغير يشير إلى قيمة خالية. من ناحية أخرى ، لا يمكن أبدا أن يشير متغير المرجع إلى Null.
- يمكنك دائمًا إنشاء متغير مؤشر unitialized ، ولكننا ننشئ مرجعًا عندما نحتاج إلى اسم مستعار لبعض المتغيرات بحيث لا يمكنك أبدًا إنشاء إحالة unitialize.
- يمكنك إعادة تهيئة المؤشر ولكن بمجرد تهيئة isfernce لا يمكنك إعادة تهيئته مرة أخرى.
- يمكنك إنشاء مؤشر فارغ وتهيئته في أي وقت ولكن يجب عليك تهيئة الطلب فقط عند إنشاء مرجع.
ملحوظة:
جافا لا يدعم المؤشرات.
استنتاج
يتم استخدام المؤشر والمرجع للإشارة إلى متغير آخر أو إحالته. لكن كلاهما يختلف في استخدامها والتنفيذ.