English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات أساسية لغة C

تحكم في عملية لغة C

الوظائف في لغة C

المساحات في لغة C

الإشارات في لغة C

ال

هيكل لغة C

ملفات لغة C

C أخرى

دليل مراجعة لغة C

البنية والإشارات في C

في هذا التعليم، ستتعلم كيفية الوصول إلى أعضاء الهيكل باستخدام البوابة في لغة البرمجة C. ستتعلم أيضًا كيفية تخصيص ذاكرة الهيكل النوعي.

قبل فهم كيفية استخدام البوابة مع الهيكل، يرجى قراءة التعليمات التالية:

مراجعة 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

تخصيص ذاكرة الـ struct

قبل أن تنتقل إلى هذا الفصل، يُنصحك بمراجعةتخصيص ذاكرة الـ C.

في بعض الأحيان، قد لا يكون عدد المتغيرات التي أعلنتها كافياً. قد تحتاج إلى تخصيص ذاكرة عند تشغيل البرنامج. هذا هو الطريقة التي يمكنك من خلالها تحقيق ذلك في لغة البرمجة C.

مثال: تخصيص ذاكرة الـ struct بشكليندي

#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.