English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا التعليم، ستتعلم كيفية الوصول إلى أعضاء الهيكل باستخدام البوابة في لغة البرمجة C. ستتعلم أيضًا كيفية تخصيص ذاكرة الهيكل النوعي.
قبل فهم كيفية استخدام البوابة مع الهيكل، يرجى قراءة التعليمات التالية:
هذه هي طريقة إنشاء بوابات الهيكل.
struct name { member1; member2; . . }; int main() { struct name *ptr, Harry; }
في هذا السياق، ptr هو بوابة تشير إلى الهيكل.
للوصول إلى أعضاء الهيكل باستخدام البوابة، نستخدم عمودية ->.
#include <stdio.h> struct person { int age; float weight; }; int main() { struct person *personPtr, person1; personPtr = &person1; printf("إدخال العمر: "); scanf("%d", &personPtr->age); printf("إدخال الوزن: "); scanf("%f", &personPtr->weight); printf("عرض:\n"); printf("العمر: %d\n", personPtr->age); printf("وزن: %f", personPtr->weight); عدد عودة 0; }
نتيجة الخروج
إدخل العمر: 25 إدخل الوزن: 55 عرض: العمر: 25 الوزن: 55.000000
في هذا المثال، يتم حفظ عنوان person1 في إشارة personPtr باستخدام personPtr =&person1;
الآن يمكنك استخدام إشارة personPtr للوصول إلى أعضاء person1.
بالمناسبة،
personPtr->age تساوي (*personPtr).age
personPtr->weight تساوي (*personPtr).weight
قبل أن تنتقل إلى هذا الفصل، يُنصحك بمراجعةتخصيص ذاكرة الـ C.
في بعض الأحيان، قد لا يكون عدد المتغيرات التي أعلنتها كافياً. قد تحتاج إلى تخصيص ذاكرة عند تشغيل البرنامج. هذا هو الطريقة التي يمكنك من خلالها تحقيق ذلك في لغة البرمجة C.
#include <stdio.h> #include <stdlib.h> struct person { int age; float weight; char name[30]; }; int main() { struct person *ptr; int i, n; printf("إدخل عدد الأشخاص: "); scanf("%d", &n); //تخصيص ذاكرة الـ struct person لن ptr = (struct person*) malloc(n * sizeof(struct person)); for(i = 0; i < n; ++i) { printf("إدخل الاسم والعمر بشكل منفصل: "); //للوصول إلى عضو الـ struct person الأول //يمكنك استخدام ptr->name و ptr->age //للوصول إلى عضو الـ struct person الثاني //استخدام (ptr + 1)->name و (ptr + 1)-> age scanf("%s %d", (ptr+i)->name, &(ptr+i)->age); } printf("عرض المعلومات:\n"); for(i = 0; i < n; ++i) printf("الاسم: %s العمر: %d\n", (ptr+i)->name, (ptr+i)->age); عدد عودة 0; }
عند تشغيل هذا البرنامج، الناتج يكون:
إدخل عدد الأشخاص: 2 إدخل الاسم والعمر بشكل منفصل: Harry 24 إدخل الاسم والعمر بشكل منفصل: Gary 32 عرض المعلومات: الاسم: Harry العمر: 24 الاسم: Gary العمر: 32
في المثال السابق، تم إنشاء n متغيرات struct.
لإعداد ذاكرة n من struct person، نستخدم،
ptr = (struct person*) malloc(n * sizeof(struct person));
ثم، نستخدم إشارة ptr للوصول إلى عناصر person.