الإعلان عن Struct
جزء من قسم المنطق وتدفق التنفيذ في رحلة C على Coddy. الدرس 39 من 63.
الآن بعد أن فهمت ما هو struct، حان الوقت لتتعلم كيفية إنشاء أنواع البُنى الخاصة بك. يتبع تعريف struct في C صياغةً محددةً تحدد مخطط نوع البيانات المخصص لك.
البنية الأساسية لإعلان struct هي:
struct StructureName {
datatype member1;
datatype member2;
// ... المزيد من الأعضاء
};إليك كيفية عمل كل جزء: تبدأ بالكلمة المفتاحية struct، متبوعةً باسم للهيكل، ثم تسرد جميع members داخل الأقواس المعقوفة. يتم التصريح عن كل عضو تمامًا مثل المتغير العادي، مع نوع البيانات والاسم الخاص به. لا تنسَ الفاصلة المنقوطة بعد القوس المعقوف الختامي!
على سبيل المثال، لإنشاء بنية تمثّل نقطة في فضاء ثنائي الأبعاد:
struct Point {
int x;
int y;
};يُنشئ هذا التصريح نوع بيانات جديدًا يُسمى struct Point ويحتوي على عضوين صحيحين: x وy. بعد التصريح عنه، يمكن استخدام نوع البنية هذا في جميع أنحاء برنامجك لإنشاء متغيرات تحتوي على معلومات الإحداثيات بطريقة منظمة.
التحدي
سهلأنشئ برنامجًا بلغة 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 يجب أن تكون صحيحة حتى يُترجم البرنامج ويعمل بنجاح.
جرّب بنفسك
#include <stdio.h>
int main() {
// TODO: عرّف هيكل Book الخاص بك هنا
// اطبع رسالة التأكيد
printf("Book struct defined successfully!\n");
// TODO: اطبع حجم هيكل Book وأعضائه
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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()مراجعة: دوال السلاسل النصية الأساسيةتدرّب بنفسك: مترجم C عبر الإنترنت