الإعلان عن Struct
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 39 من 63.
الآن بعد أن فهمت ماهية الـ struct، حان الوقت لتعلم كيفية إنشاء أنواع الهياكل (structure types) الخاصة بك. يتبع التصريح عن struct في لغة C صيغة محددة تحدد المخطط الأساسي لنوع البيانات المخصص لك.
الصيغة الأساسية للتصريح عن struct هي:
struct StructureName {
datatype member1;
datatype member2;
// ... المزيد من الأعضاء
};إليك كيفية عمل كل جزء: تبدأ بالكلمة المفتاحية struct، يتبعها اسم لهيكلك، ثم تسرد جميع المتغيرات الأعضاء داخل أقواس متعرجة. يتم التصريح عن كل عضو تماماً مثل المتغير العادي مع نوع البيانات واسمه. لا تنسَ الفاصلة المنقوطة بعد قوس الإغلاق!
على سبيل المثال، لإنشاء هيكل (structure) يمثل نقطة في فضاء ثنائي الأبعاد:
struct Point {
int x;
int y;
};يُنشئ هذا التصريح نوع بيانات جديد يسمى struct Point يحتوي على عضوين من نوع الأعداد الصحيحة: x و y. بمجرد التصريح عنه، يمكن استخدام نوع الهيكل (structure) هذا في جميع أنحاء برنامجك لإنشاء متغيرات تحتفظ بمعلومات الإحداثيات بطريقة منظمة.
التحدي
سهلأنشئ برنامجاً بلغة C يقوم بتعريف struct لتمثيل كتاب في نظام مكتبة. يجب أن يقوم برنامجك بما يلي:
- تعريف
structباسمBookيحتوي على الأعضاء التالية:- عدد صحيح
idلتخزين رقم تعريف الكتاب - مصفوفة أحرف
titleبحجم 50 لتخزين عنوان الكتاب - عدد صحيح
pagesلتخزين عدد الصفحات - رقم عشري
priceلتخزين سعر الكتاب
- عدد صحيح
- بعد تعريف الـ struct، اطبع رسالة تأكيد:
Book struct defined successfully! - اطبع حجم الـ
Bookstruct بالبايت باستخدامsizeof()بالتنسيق التالي:Size of Book struct: [size] bytes - اطبع حجم كل عضو بشكل فردي:
Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
يختبر هذا التحدي فهمك لقواعد تعريف الـ struct، بما في ذلك الاستخدام الصحيح للكلمة المفتاحية struct، وتعريف الأعضاء بأنواع البيانات المناسبة، والفاصلة المنقوطة بعد قوس الإغلاق. ستستكشف أيضاً كيف تخصص لغة C الذاكرة لأعضاء الـ struct باستخدام عامل sizeof().
تذكر أن قيم الحجم الدقيقة قد تختلف اعتماداً على بنية نظامك، ولكن يجب أن تكون قواعد تعريف الـ struct صحيحة حتى يتم تجميع البرنامج وتشغيله بنجاح.
ورقة مرجعية
للإعلان عن struct في لغة C، استخدم الصيغة التالية:
struct StructureName {
datatype member1;
datatype member2;
// ... المزيد من الأعضاء
};ابدأ بالكلمة المفتاحية struct، متبوعة باسم لهيكلك، ثم اسرد جميع المتغيرات الأعضاء داخل أقواس متعرجة. يتم الإعلان عن كل عضو بنوع بياناته واسمه. لا تنسَ الفاصلة المنقوطة بعد قوس الإغلاق!
مثال على هيكل Point:
struct Point {
int x;
int y;
};يؤدي هذا إلى إنشاء نوع بيانات جديد يسمى struct Point مع عضوين من نوع الأعداد الصحيحة يمكن استخدامهما في جميع أنحاء برنامجك.
جرّب بنفسك
#include <stdio.h>
int main() {
// TODO: قم بتعريف هيكل الكتاب (Book struct) هنا
// طباعة رسالة تأكيد
printf("Book struct defined successfully!\n");
// TODO: اطبع حجم هيكل الكتاب وأعضائه
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف7الهياكل (structs)
ما هو الـ Struct؟الإعلان عن Structإنشاء متغيرات Structالوصول إلى أعضاء الـ Structتهيئة الـ Structsمراجعة: Struct بيانات الطالب2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية