الدرس 16: البُنى — struct وtypedef
تخزّن المصفوفة قيمًا كثيرة من النوع نفسه — لكن ماذا لو احتاج طالب إلى اسم (سلسلة نصية) ودرجة (عدد) معًا؟ لهذا الغرض يوجد struct: فهو يجمع الحقول المترابطة في نوع جديد واحد، مثل struct Student { char name[20]; int grade; };. تصل إلى الحقل بنقطة: s.grade = 95;، وتملأ حقل السلسلة النصية بـ strcpy التي
الـ struct مثل ملف طالب في إدارة المدرسة: مجلد واحد بأقسام مُعنونة — خانة للاسم، وخانة للدرجة. بدلاً من تشتيت الأوراق في أنحاء المكتب، يبقى كل شيء معًا تحت اسم واحد.
- struct (بُنية)
- نوع جديد يجمع عدة حقول مترابطة — حتى لو كانت من أنواع مختلفة — تحت اسم واحد.
- حقل (member)
- متغيّر داخل struct، مثل name أو grade. لكل حقل نوعه واسمه الخاص.
- عامل النقطة s.grade
- طريقة الوصول إلى حقل من متغيّر struct: اسم المتغيّر، ثم نقطة، ثم اسم الحقل.
- typedef
- يمنح النوع اسمًا جديدًا. typedef struct {...} Student; يتيح لك التصريح Student s; دون الكلمة المفتاحية struct.
- مصفوفة من البُنى
- Student class[30]; — ثلاثون طالبًا، لكل واحد اسمه ودرجته الخاصة: class[0].grade.