ما هو المؤشر؟
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 1 من 63.
فكر في ذاكرة حاسوبك كأنها مبنى سكني ضخم يضم آلاف الغرف. لكل غرفة عنوان فريد، ويمكن لكل غرفة تخزين قطعة واحدة من البيانات. عندما تنشئ متغيرًا في لغة C، يتم تخصيصه لإحدى هذه الغرف.
يُعد المؤشر (pointer) نوعاً خاصاً من المتغيرات التي لا تخزن بيانات عادية مثل الأرقام أو الأحرف. بدلاً من ذلك، فإنه يخزن عنوان موقع ذاكرة لمتغير آخر. فكر في الأمر مثل كتابة رقم شقة شخص ما على قطعة من الورق - فالورقة لا تحتوي على الشخص نفسه، ولكنها تخبرك بالضبط بمكان العثور عليه.
int age = 25; // هذا ينشئ متغيراً باسم 'age' في الذاكرة
int *ptr; // هذا ينشئ مؤشراً يمكنه تخزين عنوانفي هذا المثال، يتم تخزين age في عنوان ذاكرة معين (لنقل الغرفة 1004)، و ptr هو متغير مؤشر يمكنه تخزين العنوان 1004 ليقوم بـ "الإشارة إلى" متغير age.
تُعد المؤشرات (Pointers) واحدة من أقوى ميزات لغة C لأنها تتيح لك العمل مباشرة مع عناوين الذاكرة، مما يجعل برامجك أكثر كفاءة وتُمكّن من استخدام تقنيات متقدمة مثل تخصيص الذاكرة الديناميكي وهياكل البيانات المعقدة.
ورقة مرجعية
إن المؤشر (pointer) هو متغير يخزن عنوان الذاكرة لمتغير آخر، بدلاً من تخزين البيانات بشكل مباشر.
للإعلان عن مؤشر، استخدم عامل التشغيل *:
int age = 25; // متغير عادي
int *ptr; // متغير مؤشر يمكنه تخزين عنوانتسمح المؤشرات بالتلاعب المباشر بالذاكرة وتمكن من تقنيات البرمجة المتقدمة مثل تخصيص الذاكرة الديناميكي وهياكل البيانات المعقدة.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية