كما نعلم ذلك بالفعل 'ما هو المؤشر' المؤشر هو متغير يخزن عنوان متغير آخر. يُعرف عامل إلغاء المرجعية أيضًا باسم عامل التشغيل غير المباشر، والذي يتم تمثيله بـ (*). عند استخدام عامل الاتجاه غير المباشر (*) مع متغير المؤشر، فإنه يعرف باسم إلغاء الإشارة إلى المؤشر. عندما نقوم بإلغاء الإشارة إلى المؤشر، فسيتم إرجاع قيمة المتغير الذي يشير إليه هذا المؤشر.
لماذا نستخدم مؤشر إلغاء الإشارة؟
يتم استخدام إلغاء الإشارة إلى المؤشر للأسباب التالية:
- ويمكن استخدامه للوصول إلى البيانات المخزنة في موقع الذاكرة المشار إليه بالمؤشر أو معالجتها.
- أي عملية يتم تطبيقها على المؤشر الذي تم إلغاء الإشارة إليه ستؤثر بشكل مباشر على قيمة المتغير الذي يشير إليه.
دعونا نلاحظ الخطوات التالية لإلغاء الإشارة إلى المؤشر.
هاشتاج جافا
- أولاً، نعلن عن المتغير الصحيح الذي يشير إليه المؤشر.
int x =9;
- الآن نعلن عن متغير المؤشر الصحيح.
int *ptr;
- بعد الإعلان عن متغير المؤشر الصحيح، نقوم بتخزين عنوان المتغير 'x' إلى متغير المؤشر 'ptr'.
ptr=&x;
- يمكننا تغيير قيمة المتغير 'x' عن طريق إلغاء الإشارة إلى المؤشر 'ptr' كما هو موضح أدناه:
*ptr =8;
يغير السطر أعلاه قيمة المتغير 'x' من 9 إلى 8 لأن 'ptr' يشير إلى موقع 'x' وإلغاء مرجعية 'ptr'، على سبيل المثال، *ptr=8 سوف يقوم بتحديث قيمة x.
دعونا نجمع كل الخطوات المذكورة أعلاه:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
انتاج |
دعونا نفكر في مثال آخر.
#include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf(' The value of y is : %d',y); return 0; }
في الكود أعلاه:
- نعلن عن متغيرين 'x' و'y' حيث يحمل 'x' القيمة '4'.
- نعلن عن متغير المؤشر 'ptr'.
- بعد الإعلان عن متغير المؤشر، نقوم بتعيين عنوان المتغير 'x' للمؤشر 'ptr'.
- كما نعلم أن 'ptr' يحتوي على عنوان المتغير 'x'، لذا فإن '*ptr' هو نفس 'x'.
- نقوم بتعيين قيمة 'x' إلى 'y' بمساعدة المتغير 'ptr'، أي y=* بتر بدلاً من استخدام المتغير 'x'.
ملاحظة: وفقًا لنا، إذا قمنا بتغيير قيمة 'x'، فسيتم تغيير قيمة 'y' أيضًا لأن المؤشر 'ptr' يحمل عنوان المتغير 'x'. لكن هذا لا يحدث، حيث يقوم 'y' بتخزين النسخة المحلية من القيمة '5'.
انتاج |
دعونا نفكر في سيناريو آخر.
#include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; }
في الكود أعلاه:
- أولاً، نعلن عن المتغير 'a'.
- ثم نعلن عن مؤشرين، أي ptr1 وptr2.
- يحتوي كلا المؤشرين على عنوان المتغير 'a'.
- نقوم بتعيين القيمة '7' لـ *ptr1 و'6' لـ *ptr2. القيمة النهائية لـ 'a' ستكون '6'.
ملحوظة: إذا كان لدينا أكثر من مؤشر يشير إلى نفس الموقع، فإن التغيير الذي يحدثه مؤشر واحد سيكون هو نفسه مؤشر آخر.
انتاج |