التعداد (enum)
يعطي أسماء واضحة لمجموعة ثوابت صحيحة:
enum Day { SUN, MON, TUE, WED }; // 0, 1, 2, 3
enum Day today = TUE;
printf("%d\n", today); // 2
يمكن تحديد القيم:
enum Status { OK = 200, NOT_FOUND = 404 };
الاتحاد (union)
يشبه الهيكل لكن كل الحقول تتشارك نفس موقع الذاكرة، فيُستخدم حقل واحد في كل مرّة:
union Value {
int i;
float f;
char c;
};
union Value v;
v.i = 65;
printf("%d\n", v.i); // 65
حجم الاتحاد = حجم أكبر حقل (توفير ذاكرة).
الفرق
- struct: كل الحقول موجودة معًا (مجموع الأحجام).
- union: حقل واحد فعّال في كل لحظة (حجم الأكبر).
🎯 التالي: أصناف التخزين والثوابت.