مراجعة سريعة
int x = 10;
int *p = &x; // p يخزّن عنوان x
printf("%d\n", *p); // 10 (* تقرأ القيمة)
*p = 20; // تعديل x عبر المؤشّر
المؤشّرات والمصفوفات
اسم المصفوفة هو في الحقيقة مؤشّر لأوّل عنصر:
int arr[3] = {10, 20, 30};
int *p = arr;
printf("%d\n", *(p + 1)); // 20 (حساب المؤشّر)
p + 1 ينتقل عنصرًا واحدًا (وليس بايتًا واحدًا) حسب نوع المؤشّر.
مؤشّر إلى مؤشّر
int x = 5;
int *p = &x;
int **pp = &p;
printf("%d\n", **pp); // 5
NULL والأمان
int *p = NULL; // مؤشّر فارغ
if (p != NULL) *p = 1; // افحص قبل الاستخدام
أخطاء شائعة
- استخدام مؤشّر غير مهيّأ أو مؤشّر فارغ → تعطّل (segmentation fault).
🎯 التالي: إدارة الذاكرة الديناميكية.