الدرس 34: المؤشرات الجزء 1: ما هي المؤشرات؟
تعتبر المؤشرات (Pointers) أقوى ميزة فريدة في لغة C. المؤشر هو متغير يخزن عنوان الذاكرة لمتغير آخر.
الذاكرة والعناوين
كل بايت في ذاكرة الكمبيوتر له عنوان فريد (رقم) مخصص له. عندما نصرح عن متغير، يتم تخصيص ذاكرة له، ويعرف المترجم عنوانه.
| المتغير | القيمة | عنوان الذاكرة (مثال) |
|---|---|---|
int x | 42 | 0x7ffee1234568 |
التصريح عن المؤشر
للتصريح عن متغير مؤشر، استخدم معامل فك المرجع (*).
القاعدة: data_type *pointer_variable_name;
يحدد الـ data_type نوع البيانات التي يشير إليها المؤشر، وليس نوع المؤشر نفسه (الذي يحمل دائماً عنواناً).
c int *ptr_to_int; // مؤشر لعدد صحيح char *ptr_to_char; // مؤشر لحرف (أو سلسلة نصية) double *ptr_to_double; // مؤشر لعدد عشري
معاملات المؤشرات
1. معامل العنوان (&)
يعيد عنوان الذاكرة لمتغير ما.
2. معامل فك المرجع/غير المباشر (*)
يصل إلى القيمة المخزنة في عنوان الذاكرة الذي يحمله المؤشر.
c int x = 100; int *p;
// 1. تعيين عنوان x للمؤشر p p = &x;
// 2. الوصول للقيمة في العنوان المخزن في p printf("قيمة x: %d\n", *p); // المخرجات: 100
// تغيير قيمة x باستخدام المؤشر *p = 200; printf("القيمة الجديدة لـ x: %d\n", x); // المخرجات: 200