الدرس 43: المؤشرات إلى الهياكل (معامل -> )
غالباً ما يتم تمرير الهياكل إلى الدوال باستخدام المؤشرات لتوفير الذاكرة والسماح بالتعديل (التمرير بالمرجع).
التصريح عن مؤشر لهيكل
c struct Person { char name[30]; int age; };
struct Person p1 = {"John", 45}; struct Person *ptr_p1; // تصريح عن مؤشر لهيكل Person
ptr_p1 = &p1; // تعيين عنوان p1 للمؤشر
الوصول للأعضاء عبر المؤشر
هناك طريقتان متكافئتان للوصول لعضو هيكل باستخدام المؤشر:
1. فك المرجع ومعامل النقطة
أولاً فك مرجع المؤشر، ثم استخدم معامل النقطة.
c (*ptr_p1).age = 46; printf("العمر: %d\n", (*ptr_p1).age);
2. معامل السهم (->)
توفر لغة C اختصاراً، وهو معامل السهم (->) ، وهو عادةً ما يكون أكثر وضوحاً وتفضيلاً.
c ptr_p1->age = 47; // يكافئ (*ptr_p1).age = 47 printf("الاسم: %s\n", ptr_p1->name);
التخصيص الديناميكي للهياكل
يمكن تخصيص الهياكل في الكومة (heap) باستخدام malloc() أو calloc() ، والتي تعيد دائماً مؤشراً للهيكل.
c struct Person *new_person = (struct Person *) malloc(sizeof(struct Person));
if (new_person != NULL) { new_person->age = 25; // لا تنسى تحرير الذاكرة لاحقاً! free(new_person); }