ما هي فئة التخزين في C ++ وأنواعها؟



في مدونة فئات التخزين هذه ، سننظر في فئات التخزين المختلفة المستخدمة في C ++ مثل تلقائي ، والتسجيل ، وثابت ، وخارجي ، وقابل للتغيير مع أمثلة.

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

هيا نبدأ.





ما هي فئة التخزين في C ++؟

كل متغير في C ++ له نوع بيانات وفئة تخزين. يحدد نوع البيانات نوع البيانات التي يمكن تخزينها في متغير مثل int و float و char إلخ. تتحكم فئة التخزين في خاصيتين مختلفتين للمتغير: العمر والنطاق.

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



أنواع فئة التخزين

هناك خمس فئات تخزين في برنامج C ++:

  • تلقاءي
  • تسجيل
  • ثابتة
  • خارجي
  • متقلب

دعونا نناقش كل فئة من فئات التخزين بالتفصيل.

فئة التخزين التلقائي

فئة التخزين التلقائي (التلقائي) هي فئة التخزين الافتراضية لجميع المتغيرات المحلية ، والتي يتم الإعلان عنها داخل وظيفة أو كتلة. نادرًا ما يتم استخدام الكلمة الأساسية التلقائية أثناء كتابة ملف برنامج C ++ .



يقع نطاق المتغيرات التلقائية داخل الوظيفة أو الكتلة حيث تم الإعلان عنها ولا يمكن الوصول إليها خارج تلك الوظيفة أو الكتلة. يمكن أيضًا الوصول إليه داخل الكتل المتداخلة داخل الكتلة / الوظيفة الأصلية التي تم فيها إعلان المتغير التلقائي.

يمكنك الوصول إلى المتغيرات الآلية خارج نطاقها باستخدام متغير المؤشر. تحتاج إلى الإشارة إلى نفس موقع الذاكرة حيث توجد المتغيرات.

عمرها هو نفس عمر الوظيفة. بمجرد الانتهاء من تنفيذ الوظيفة ، يتم إتلاف المتغير.

بشكل افتراضي ، يتم تعيين قيمة القمامة لهم أثناء الإعلان.

بناء الجملة:

نوع البيانات var_name1 [= القيمة]

أو

نوع البيانات التلقائي var_name1 [= value]

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

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

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

وبالتالي ، تكون العمليات على متغيرات التسجيل أسرع بكثير من المتغيرات الأخرى المخزنة في الذاكرة أثناء وقت تشغيل البرنامج.

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

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

بناء الجملة:

تسجيل نوع البيانات var_name1 [= value]

مثال:

ما هو الشيف في devops
{تسجيل دولي}

تحديد 'سجل' لا يعني أنه سيتم تخزين المتغير في سجل. قد يتم تخزينها في سجل اعتمادًا على قيود الأجهزة والتنفيذ.

دعونا نلقي نظرة على مثال لفئات التسجيل والتخزين التلقائي.

مثال:

#include using namespace std // معلنا عن المتغير المراد جعله خارجي // يمكن أيضا تهيئة القيمة الأولية إلى x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // إعلان متغير تلقائي (ببساطة تعمل // كتابة 'int a = 32' أيضًا) int num = 32 // طباعة المتغير التلقائي 'a' printf ('قيمة المتغير' num '' المعلنة على أنها تلقائية:٪ dn '، num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / التصريح عن متغير تسجيل سجل char c = 'G' // طباعة متغير السجل 'b' printf ('قيمة المتغير' c '' تم إعلانه كمسجل:٪ dn '، c) printf (' ---- ---------------------------- ')} int main () {// لتوضيح فئة التخزين التلقائي autoStorageClass () // للتوضيح تسجيل فئة التخزين registerStorageClass () إرجاع 0}

انتاج:

الإخراج - فئة التخزين في C ++ - Edurekaفئة التخزين الثابت

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

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

في C ++ ، عند استخدام static على عضو بيانات فئة ، فإنه يتسبب في مشاركة نسخة واحدة فقط من هذا العضو من قبل جميع كائنات فئته.

بناء الجملة:

نوع البيانات الثابت var_name1 [= القيمة]

مثال:

#include void function (void) static int c = 5 // Global static variable main () {while (c--) {function ()} return 0} void function (void) {static int cnt = 2 cnt ++ std :: كوت<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

انتاج:

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

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

عمر المتغيرات الخارجية هو ما دام البرنامج الذي تم الإعلان عنه منتهي. يمكن إنشاء متغير عام عادي خارجي أيضًا عن طريق وضع الكلمة الرئيسية 'الخارجية' قبل إعلانها / تعريفها في أي وظيفة / كتلة.

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

بناء الجملة

نوع البيانات الخارجية var_name1

مثال

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

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

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

هنا ، يتم استخدام الكلمة الأساسية الخارجية للإعلان عن cnt في ملف آخر. الآن قم بتجميع هذين الملفين على النحو التالي & ناقص

$ g ++ main.cpp support.cpp -o write

سينتج هذا برنامج كتابة قابل للتنفيذ ، حاول تنفيذ الكتابة وتحقق من النتيجة على النحو التالي & ناقص

$. / الكتابة

5

المضي قدمًا في فئة التخزين في C ++ ، دعنا نلقي نظرة على آخر فئة ، أي فئة التخزين القابل للتغيير.

فئة التخزين المتغير

المحدد المتغير ينطبق فقط على كائنات الفئة ، مما يسمح لعضو في كائن بتجاوز وظيفة عضو const. أي ، يمكن تعديل عضو قابل للتغيير بواسطة دالة عضو const.

أخيرًا ، دعنا نلقي نظرة على جدول المقارنة لفهم الاختلافات بين فئات التخزين المختلفة.

فئة التخزين

الكلمة الرئيسية

تطبيقات تحليل البيانات الضخمة

حياة

الرؤية

القيمة البدائية

تلقائي

تلقاءي

كتلة الوظيفة

محلي

قمامة

خارجي

خارجي

برنامج كامل

عالمي

صفر

عكس رقم في بيثون

ثابتة

ثابتة

برنامج كامل

محلي

صفر

تسجيل

تسجيل

كتلة الوظيفة

محلي

قمامة

متقلب

متقلب

صف دراسي

محلي

قمامة

الآن بعد الاطلاع على برامج C ++ المذكورة أعلاه ، ستفهم ما هي فئات التخزين المختلفة في C ++ وكيفية تنفيذها. آمل أن تكون هذه المدونة مفيدة وذات قيمة مضافة لك.

وهكذا وصلنا إلى نهاية هذه المقالة حول 'فئات التخزين في C ++'.

إذا كنت ترغب في معرفة المزيد ، تحقق من بواسطة Edureka ، شركة تعليمية موثوقة عبر الإنترنت. تم تصميم دورة تدريب وإصدار شهادات Java J2EE و SOA من Edureka لتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في هذه المدونة وسنعاود الاتصال بك في أقرب وقت ممكن.