العودة إلى الدورة

المؤشرات إلى الهياكل (معامل '->')

لغة C: من الصفر إلى الاحتراف - الدليل الشامل للمبتدئين

الدرس 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); }