Latest web development tutorials

C فئة تخزين

فئة تخزين متغير برنامج تعريف C / مجموعة وظيفة (الرؤية) ودورة الحياة. هذه المحددات وضعت قبل أن تعديل نوع. المدرجة أدناه هي تخزين الفئة C المتاحة في البرنامج:

  • السيارات
  • تسجيل
  • ساكن
  • خارجي

فئة تخزين السيارات

فئة تخزينالسيارات هو كل محلية من الدرجة المتغيرات التخزين الافتراضي.

{
   int mount;
   auto int month;
}

يحدد المثال أعلاه متغيرين مع فئة تخزين نفس، والسيارات يمكن أن تستخدم إلا في إطار وظيفة، وهي السيارات يعدل فقط المتغير المحلي.

تسجيل فئة تخزين

يستخدمتسجيل فئة تخزين لتحديد المخزنة في سجلات بدلا من ذاكرة الوصول العشوائي في المتغيرات المحلية.وهذا يعني أن الحد الأقصى لحجم المتغير يساوي حجم التسجيل (عادة ما تكون كلمة)، والتي لا يمكن تطبيقها على أنه عامل أحادي '&' (لأنه لا يوجد لديه مكان الذاكرة).

{
   register int  miles;
}

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

فئة تخزين ثابتة

فئة تخزينثابتة يرشد المترجم للحفاظ على وجود المتغيرات المحلية في دورة حياة البرنامج، دون الحاجة إلى إدخالها في كل مرة تذهب خارج النطاق، وأنه يخلق وتدميرها.ولذلك، فإن استخدام المتغيرات المحلية ثابتة يمكن تعديلها للحفاظ على قيمة المتغيرات المحلية بين المكالمات وظيفة.

معدل ثابت يمكن تطبيقه على المتغيرات العالمية. عندما تعديل متغير عمومي ثابت، فإن المتغير يحد من نطاق البيان في ملفاتها.

البرمجة في C، عند استخدامها على أعضاء بياناتثابتة للطبقة، وجميع الأشياء يؤدي في نسخة واحدة فقط من الطبقة المشتركة الاعضاء.

#include <stdio.h>
 
/* 函数声明 */
void func(void);
 
static int count = 5; /* 全局变量 */
 
main()
{
   while(count--)
   {
      func();
   }
   return 0;
}
/* 函数定义 */
void func( void )
{
   static int i = 5; /* 局部静态变量 */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

ربما كنت لا تزال لا يمكن فهم هذه الحالة، لأنني قد استخدمت وظائف والمتغيرات العالمية، هذين المفهومين حتى الآن لا يفسر. حتى لو كنت لا أفهم تماما، لا يهم، وفصول لاحقة سوف نشرح بالتفصيل. عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

فئة تخزين خارجي

يستخدم فئة تخزينخارجي لتوفير مرجع إلى متغير عمومي، متغير عالمي لجميع ملفات البرنامج مرئية.عند استخدام 'خارجي'، الذي لا يمكن تهيئة متغير، ويشير اسم المتغير إلى موقع تخزين المعرفة مسبقا.

عندما يكون لديك وثائق متعددة وتحديد متغير عمومي أو الدالة التي يمكن استخدامها في وثائق أخرى، يمكنك استخدامخارجيفي ملفات أخرى للحصول على متغير أو وظيفة محددة المرجعية. ويمكن أنيفهم،ويستخدم خارجي لتعريف متغير عالمي أو وظيفة في ملف آخر.

يستخدم معدل خارجي ... عادة عندما يكون هناك نوعان أو أكثر من الملفات تتشارك المتغيرات أو وظائف من الزمن العالمية نفسها، على النحو التالي:

الملف الأول: main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main()
{
   count = 5;
   write_extern();
}

الملف الثاني: support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void)
{
   printf("count is %d\n", count);
}

هنا، يتم استخدام الكلمة الثانية ملفخارجيإلىالاعتمادفي البيان الأول تم تعريفها في main.c. ملف الآن، تجميع كل الملفات، على النحو التالي:

 $gcc main.c support.c

هذا وسوف تنتجa.out برنامج قابل للتنفيذ، عند تنفيذ البرنامج، وسوف تؤدي إلى النتائج التالية:

5