بدأت مؤخرا بتعلم لغة C
و أعجبت كثيرا بها
و لكن عندما وصلت إلى الPointers لم أستطع أن أفهمها
لذلك رجاء أحتاج إلى تبسيط لهذه الPointers
سأشبهها بمثال من واقع حياتنا وأظن بعدها سيسهل فهمها.
على فرض أن شركة تعتزم تقديم خدمة استقبال الشحنات والطرود لجميع الناس والتي يمكن أن تكون قطعة إلكترونية صغيرة أو صندوق أو حتى سيارة ولكي تستوعب أي حجم قررت أن تحجز لكل فرد مخزن كبير يستوعب عدة طرود مهما كان حجمها
فواجهتها مشكلة، فمن أين لها تأمين عدد مخازن بعدد المشتركين الكُثر.
فخطرت لها فكرة، قررت شراء قطعة أرض كبيرة وبنت عليها مخزن كبير، ثم بَنَت غرفة جانبية ووضعت فيها صناديق بحجم صغير جدا يتسع لمجموعة رسائل وخصصت لكل مشترك صندوق.
في البداية الصندوق موجود لكنه فارغ لهذا لا يمكن للمشترك أن يفعل شيئاً.
لكن سواء تلقى مظروف رسالة أو قطعة إلكترونية صغيرة جدا أو تلقى طرد أو حتى سيارة أو شاحنة فإنها ستوضع في المخزن الكبير ومن ثم يوضع في صندوقه ورقة صغيرة عبارة عن إشعار بوجود طرد وتحوي رقم خاص بالشحنة.
حينها إذا وجد المشترك الإشعار يأخذه ويذهب لأمين المستودع ليطلعه على الشحنة للتأكد من سلامتها وأنها مطابقة، لكنه يقرر عدم استلامها الآن، وبعد مدة قرر استلامها فأخذها وأصبح مكانها داخل المخزن خاليا، وكذلك عاد الصندوق خاليا، لتلقي طرد جديد.
المؤشرات في اللغات التي تدعمه أشبه بهذا الأمر.
فبدلا من حجز مكان كبير في الذاكرة ومن ثم التعامل معه مباشرة من نسخ و تمرير وغيره، بدلا من ذلك تم حجز متغير صغير عبارة عن رقم مرجعي يشير إلى مكان وجود المعطيات والمتغيرات بمختلف أنواعها سواء كان بايت أو رقم أو نص أو مصفوفة كبيرة
الآن يتم التعامل مع المؤشر للدلالة على المعطيات فلو أردنا تمرير المعطيات عبر عدة متغيرات فيكفي تمرير المؤشر ولا داعي لتمرير كامل المعطيات.
في البداية المتغير المؤشر يكون صفريا أي لا يؤشر إلى مكان وهذه الحالة نسميها أن الكائن يكون null لكن إذا أردنا التعامل مع معطيات فيكفي أن نحجز لها مكان مناسب لحجمها ومن ثم نضع عنوان أول بايت في المؤشر كمرجع للوصول للمعطيات في أي وقت ومن أي مكان.
وبمجرد تصفير جميع المؤشرات التي تشير لمكان ما يصبح هذا المكان حر وبمثابة الخالي، يمكن أن يستغل لحجز معطيات جديدة.
المعطيات = الشحنات
المخزن = الذاكرة
المؤشر = صندوق البريد
قيمة المؤشر = الإشعار الذي يحوي رقم الشحنة
إنشاء قيمة للمؤشر = وصول شحنة ووضعها في المخزن
حذف المؤشر = تفريغ الشحنة من المستودع وتخلية مكانها.
التعليقات