الباب التامن 0 المؤشرات
لاحظ أن القيمة الموجودة في الخلية 018 هي عنوان الموقع 7 . في لغة سي
نعبر عن هذه العلاقة كمايلي :
حيث المؤثر ل هو مؤثر العنوان 0082108 8001888 . وبطريقة أخرى ؛ يمكن
أن نكتب الجملة :
وتعنى أن ١7 هي القيمة التي يؤشر لها 1007 .
حيث * هنا تسمى مؤثر لا مباشر 0086:8101 10011600100 -
لإعلان أن متغير 17م هو من النوع المؤشر لنوع صحيح نستخدم الإعلان :
ولإعلان أن المتغير 045 مؤشر لنوع عائم ؛ نستخدم الإعلان
وبالمثل نعلن أن 000 مؤشر لنوع مضاعف بالإعلان التالي :
قام* علطم
فإذا كان لدينا مثلا متغير 1 من النوع الصحيح وكتبنا الجملة
ته ح تتام
أساسيات و تطبيقات لمة سي 0 0
فإن 007 يتعين له عنوان الموقع أ .
وبالمثل فإن الجملة
ا - لام
تعين عنوان الموقع ؟ للمؤشر 0001 .
لاحظ ضرورة توافق نوع . (* .مع 0 ؛ حيث ( المؤشر و 70 المتغير في
الجملة
أو في الجملة
و لطباعة عنوان موقع المتغير ١ عادة ما نستخدم النظام السادس عشري على
النحو التالي :
لاك , ”6 ج به ها " التمتم
فمثلاً عند تتفيذ البرنامج التالي :
ممتمدمس
جل" محا ها تسم
الشكل (8.1.1) طباعة عنوان متغير في الذاكرة
الباب التامن 0 المؤشرات
حيث 10015 هو عنوان 1 في الذاكرة بالنظام السادس عشري . وبالتالي إذا نظرا
إلى الموقع 110126 من الذاكرة سنجد فيه القيمة 18 وهى قيمة ك1
لا يجوز أن نعين قيمة عددية من عندنا لأي مؤشر ؛ ولكن هناك استثاء
وحيد لهذه القاعدة وهو قيمة الصفر ؛ وفى هذه الحالة يسمى بالمؤشر الخالي
وجرت العادة أن يتم تعريف ,1110111 بالتوجيه
بحيث يمكن في البرنامج إجراء الإعلان التالي :
أساسيات و تطبيقات لمة سي 0 سه وسور سوه د. عر زرني
2 لمؤشرات والنضائد 001015 ع50110
فمن الملاحظ عدم إمكانية كتابة جملة مثل
كما هو الحال في بعض للغات الأخرى ؛ لأن اسم المصفوفة ف
عن مؤشر موقع أول عنصر فيها ؛ وبالتالي سنحصل على رسالة خطأ 1
١ 0ع ع1-2[0عند تعريف هذه الجملة. يمكننا تصحيح هذا الخطأ
بالإعلان :
أو نستخدم الدالة لإمع80 ( اختصار لإ[0© 50708 ) على النحو :
الباب التامن )0 المؤشرات
أو نعين عناصر المصفوفة [8]1 الواحد تلو الآخر ؛ ولكن الأبسط من ذلك كله
هو تعريف مؤشر من النوع:
ثم تعيين النضيد للمؤشر على النحو :
مثال (8.2.1) : اكتب برنامجا يستخدم المؤشرات لقراءة الاسم وربطه مع
لنضيد :
في نضيد واحد +
ممتقدم
الشكل (8.2.1) ربط نضيدين بالدالة 80081
1 . يمكن استخدام المؤشرات في متغيرات لدول
..... , كثناط , 50086 , قا6ع
وبصفة عامة في جميع دول النضائد +
2 . تعنى الجملة
أن المؤشر 8001 هو عنوان أول عنصر في النضيد 08078 . هذه الجملة
يمكن أن تكتب أيضاً بالصورة :
27 ) قاسم
تقوم بطباعة النضيد الذي يشار إلى أول عناصره بالمؤشر 8002 +
مثال (8.2.2) :_ماذا يطبع البرنامج التالي ؟
الباب التامن )0 المؤشرات
بعل مجن لصا
لع>ز ) علتطام
الشكل (8.2.2)
سيقوم هذا البرنامج بطباعة الآتي ؛
تغام
أي أن كلمة 001088 ستطبع في البداية ؛ ثم يحذف منها أول حرف على
اليسارفي كل مرة إلى أن يبقى الحرف الأخير فقط من الكلمة.
والسبب في عملية الحذف هذه الجملة
حيث يزداد المؤشر بمقدار واحد فيتحرك إلى اليمين خائة واحدة . وبما أن جملة
الطباعة
يِ تظهر لحروف الواقعة
على يسار المؤشر ؛ فإذا كان 0 يؤشر مثلاً للحرف 1 من كلمة 0010165 كما
تطبع ابتداء من الموقع الذي يشير إليه المؤشر ((ء 3
فإن جملة الطباعة المذكورة ينتج عنها طباعة الجزء (1016:8) +
1 . لدالة لجاهزة (80180)5 تعطى طول النضيد 8 ؛ أي عدد الرموز الذي
الباب التامن 8 المؤشرات
2 . المتغير 1 استخدمناه كعداد لغرض التوقف عند الوصول إلى نهاية النضيد.
طبعاً يمكننا استخدام طريقة أخرى وهى اختبار الرمز '10 الذي يبين نهاية
مثال : اكتب برنامجا يقوم بحساب عدد المرات التي يتكرر فيها حرف معين
" مهديس عيه متعاستمم "
يبين الشكل 8.2.3 البرنامج المطلوب. والغرض من هذا البرنامج هو توضيح
الفرق بين العنصر [80108]1 والمؤشر 80108 . فالأول_عبارة عن قيمة عددية
أو حرفية ؛ و الثاني هو مؤشر لبداية النضيد.
عتمم
ب 0حتميم اما