بعد ان تعلمنا في قسم البرمجة المصفوفات والدوال والمتغيرات وكيفية ارسال المصفوفة الى الدالة . جاء الوقت لنتعلم طرق برمجة اكثر تطوراً، وهي المتغيرات أو كما يطلق عليها "pointer".
ماهي المؤشرات [ Pointer ]
هو إشارة أو تأشير على موقع في الذاكرة. عرفنا سابقاً إن كل متغير أو كل متغير يُخزن في الذاكرة بموقع ذو عنوان معين والمؤشر سوف يؤشر على هذا العنوان ويمكننا من الوصول إلى القيمة المخزنة في داخله.
لاحظ الصورة أعلاه أن المؤشر يؤشر على عنوان المتغير في الذاكرة ويحمل قيمة هذا العنوان وهو (0x244f23e8) .
المؤشرات والمتغيرات
المتغيرات تخزن في الذاكرة ويمكن أن نؤشر على قيمها بواسطة (pointer) ونتلاعب بقيمة هذا الموقع بواسطته وتكون طريقة تعريف (pointer) مع المتغيرات هكذا.
- ptr : هو اسم المؤشر وقد يكون أي اسم يعرفه المستخدم ويجب وضع عالمة النجمة * قبله .
- Type: هو نوع المؤشر ويكون نوعه نفس نوع المتغير الذي يؤشر عليه . ( اطلع على أنواع المتغيرات ) .
- var: هو اسم المتغير الذي نريد أن يؤشر عليه المؤشر ويجب وضع عالمة & قبله عندما نجعل المؤشر يؤشر عليه لأن وضع هذه العلامة قبل أي متغير معناه المطلوب عنوان المتغير وليس قيمة المتغير نفسه والمؤشرات تؤشر على عناوين المتغيرات فلو وضعنا هذه العلامة أمام أي متغير في الطباعة سيطبع موقع المتغير وليس قيمته.
مثال: لو كان لدينا المتغير (x=5) ويؤشر عليه مؤشر (ptr) بالشكل التالي فيكون المخطط هكذا:
- الموقع الذي يؤشر عليه ( ptr) هو (0x244f23e8) ومحتواه هو (5) .
- للوصول على عنوان الموقع نكتب (ptr) أو نكتب ( x&) لان الاثنان أصبح لهما نفس الموقع.
- للوصول على محتويات الموقع نكتب ( ptr*) أو نكتب (x) لان الاثنان أصبح لهما نفس القيمة.
مثال: تأشير على موقع متغير وطباعة قيمته.
توضيح الخطوات:
- خطوة رقم (2) جعلنا المؤشر(ptr) يؤشر على موقع المتغير (x) .
- خطوة رقم (3) طبعنا عنوان الموقع الذي يؤشر عليه المؤشر (ptr) وهو نفس عنوان موقع المتغير (x) لانهما يؤشران على نفس الموقع. أي أننا إذا كتبنا فقط اسم المؤشر سيطبع الموقع الذي يؤشر عليه .
- خطوة رقم (4) طبعنا عنوان المتغير (x) لأننا إذا وضعنا علامة (&) قبل أي متغير سيطبع موقعه .
- خطوة رقم (5) طبعنا القيمة التي يؤشر عليها المؤشر(ptr) وهي نفس قيمة المتغير (x) لانهما يؤشران على نفس الموقع. أي أننا إذا كتبنا نجمة قبل اسم المؤشر(ptr) سيطبع محتوى الموقع الذي يؤشر عليه .
- خطوة رقم (6) سيطبع قيمة المتغير (x) شاهد شاشة التنفيذ :
مثال : تغير محتويات المتغير (g) بواسطة المؤشر؟
توضيح الخطوات:
- خطوة رقم(2) جعلنا المؤشر يشير إلى موقع المتغير (g) .
- خطوة رقم (3) وضعنا قيمة جديدة في الموقع الذي يؤشر عليه المؤشر (ptr*) وهو موقع المتغير (g) .
الدالة (NEW)
هي دالة تستخدم لحجز مكان في الذاكرة لمؤشر معين لان المؤشرات بطبيعتها سوف تؤشر على مواقع متغيرات ولن تحجز مواقع ، أما مع هذا الايعاز تستطيع حجز موقع للمؤشر. تعريفها يكون بالشكل التالي :
- ptr : هو اسم المؤشر وقد يكون أي اسم يعرفه المستخدم ويجب وضع عالمة النجمة (*) قبله .
- Type : هو نوع المؤشر ويكون نوعه نفس نوع المتغير الذي يؤشر عليه .
- size : هو الحجم أو عدد الموقع الذي سوف نحجزه للمؤشر في الذاكرة .
مثال : تكوين مؤشر جديد وحجز مكان جديد له وإبدال بين محتوى المؤشر ومحتويات المتغير (g) ؟
توضيح الخطوات:
- خطوة رقم(2) جعلنا المؤشر يشير إلى موقع جديد وخطوة رقم(3) خزنا بالموقع قيمة (32) .
- خطوة رقم (4) وضعنا قيمة المؤشر (ptr*) في متغير مؤقت للأبدال .
- خطوة رقم (5)وضعنا قيمة المتغير (g) في الموقع الذي يؤشر عليه المؤشر (ptr*) .
- خطوة رقم (6) وضعنا قيمة المؤشر التي خزناها في متغير مؤقت إلى متغير(g) .
اترك تعليقك هنا :