الوصول إلى أعضاء الـ Struct
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 41 من 63.
الآن بعد أن أصبح بإمكانك إنشاء متغيرات struct، تحتاج إلى تعلم كيفية التعامل مع البيانات المخزنة بداخلها. عامل النقطة (.) هو مفتاحك للوصول إلى الأعضاء الفرديين لمتغير struct وتعديلهم.
تعد صيغة الوصول إلى أعضاء الـ struct مباشرة:
structVariable.memberNameباستخدام مثال الـ Point struct الخاص بنا، يمكنك القراءة من أعضائه والكتابة إليها على حد سواء:
struct Point p1;
// الكتابة إلى أعضاء الـ struct
p1.x = 10;
p1.y = 20;
// القراءة من أعضاء الـ struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);يعمل عامل النقطة (dot operator) تماماً مثل الوصول إلى أي متغير آخر - حيث يمكنك استخدامه في عمليات التعيين، أو العمليات الحسابية، أو استدعاءات الدوال، أو في أي مكان تستخدم فيه متغيراً عادياً من ذلك النوع. يتصرف كل عضو كمتغير مستقل من نوعه المعلن، مما يسمح لك بمعالجة بيانات الـ struct بطريقة منظمة وبديهية.
التحدي
سهلقم بإنشاء برنامج بلغة C يوضح كيفية الوصول إلى أعضاء الهيكل (struct members) وتعديلها باستخدام عامل النقطة (dot operator). يجب أن يقوم برنامجك بما يلي:
- تعريف
structباسمCarيحتوي على الأعضاء التالية:- عدد صحيح
yearلتخزين سنة التصنيع - مصفوفة أحرف
brandبحجم 20 لتخزين علامة السيارة التجارية - عدد صحيح
mileageلتخزين المسافة المقطوعة الحالية - عدد عشري
priceلتخزين سعر السيارة
- عدد صحيح
- إنشاء متغير من نوع
CarباسمmyCar - قراءة قيم الإدخال التالية وتعيينها لأعضاء الهيكل باستخدام عامل النقطة:
- قراءة عدد صحيح للسنة وتعيينه لـ
myCar.year - قراءة سلسلة نصية للعلامة التجارية وتعيينها لـ
myCar.brand - قراءة عدد صحيح للمسافة المقطوعة وتعيينه لـ
myCar.mileage - قراءة عدد عشري للسعر وتعيينه لـ
myCar.price
- قراءة عدد صحيح للسنة وتعيينه لـ
- بعد قراءة جميع القيم، قم بإجراء العمليات التالية:
- زيادة المسافة المقطوعة بمقدار 1000 باستخدام
myCar.mileage += 1000; - إنقاص السعر بمقدار 500.0 باستخدام
myCar.price -= 500.0;
- زيادة المسافة المقطوعة بمقدار 1000 باستخدام
- طباعة معلومات السيارة باستخدام عامل النقطة للوصول إلى كل عضو بهذا التنسيق الدقيق:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
يختبر هذا التحدي فهمك لعامل النقطة لكل من القراءة من أعضاء الهيكل والكتابة إليها. ستتدرب على تعيين القيم لأعضاء الهيكل، وإجراء العمليات الحسابية عليها، والوصول إليها من أجل المخرجات.
على سبيل المثال، إذا كان الإدخال هو:
2020
Toyota
50000
25000.50يجب أن تكون مخرجاتك:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50ورقة مرجعية
يُستخدم عامل النقطة (.) للوصول إلى الأعضاء الفردية لمتغير الـ struct وتعديلها.
بناء الجملة (Syntax) للوصول إلى أعضاء الـ struct:
structVariable.memberNameمثال على القراءة من أعضاء الـ struct والكتابة إليها:
struct Point p1;
// الكتابة إلى أعضاء الـ struct
p1.x = 10;
p1.y = 20;
// القراءة من أعضاء الـ struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);يمكن استخدام عامل النقطة في عمليات التعيين، أو العمليات الحسابية، أو استدعاءات الدوال، أو في أي مكان تستخدم فيه متغيراً عادياً من ذلك النوع. يتصرف كل عضو كمتغير مستقل من نوعه المعلن.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
// TODO: قم بتعريف هيكل Car هنا
int main() {
// TODO: myCar باسم Car قم بإنشاء متغير من نوع
// قراءة قيم الإدخال
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: قم بتعيين قيم الإدخال لأعضاء الهيكل باستخدام عامل النقطة
// TODO: قم بتعديل المسافة المقطوعة والسعر كما هو محدد
// TODO: قم بطباعة تفاصيل السيارة باستخدام عامل النقطة
printf("Car Details:\n");
// اطبع السنة، الماركة، المسافة المقطوعة، والسعر هنا
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()مراجعة: دوال السلاسل النصية الأساسية