آموزش C

مباحث پایه زبان C

کلاس های حافظه در زبان C – آموزش زبان C

  • جمعه ۲ شهریور ۱۳۹۷
  • بازدید ۵,۰۰۱ نفر

تصویر c-storage-classes_3559 کلاس های حافظه در زبان C - آموزش زبان C

کلاس های حافظه در زبان C

کلاس حافظه محدوه و عمر یک متغیر یا تابع را در طول اجرای برنامه مشخص می کند. در زبان برنامه نویسی C، چهار نوع حافظه ذخیره سازی وجود دارد که در زیر هر کدام را توضیح داده ایم.

انواع کلاس های حافظه در زبان C

  • auto
  • register
  • static
  • extern

کلاس حافظه auto

auto در زبان C، به عنوان کلاس حافظه پیشفرض در نظر گرفته شده است. یعنی هر متغیری که نوع کلاس حافظه اش مشخص نشود، از نوع کلاس حافظه auto خواهد بود.

مثال فوق دو متغیر را در یک کلاس حافظه یکسان تعریف می کند. کلاس حافظه auto فقط در داخل محدوده ای که تعریف می شود، قابل دسترسی است.

کلاس حافظه register

کلاس حافظه register برای تعریف متغیرهای محلی استفاده می شود و به جای RAM در register ذخیره می شود.

کلاس حافظه register فقط برای متغیرهایی که نیاز به دسترسی سریع دارند (مانند شمارنده حلقه ها) استفاده می شود. توجه داشته باشید که در هنگام استفاده از کلاس حافظه register ممکن است اختصاص فضا ناموفق باشد.

کلاس حافظه static

متغیرهایی که در کلاس حافظه static تعریف شوند، تا پایان برنامه مقداری که آخرین بار به آن ها داده شده است را حفظ می کنند و خارج از محدوده ای که تعریف می شوند نیز قابل دسترسی هستند. زمانی که یک متغیر سراسری به صورت static تعریف شود، فقط در فایلی که اعلان شده است قابل دسترسی است.

مثال زیر عملکرد کلاس حافظه static را نشان می دهد:

امتحان کنید

نتیجه کامپایل و اجرای کد بالا:

کلاس حافظه extern

کلاس ذخیره سازی extern برای ارجاع به یک متغیر جهانی که برای همه فایل های برنامه قابل مشاهده است استفاده می شود. با استفاده از extern، متغیر نمی تواند مقداردهی اولیه شود، اما نام متغیر را در یک مکان ذخیره سازی که قبلا تعریف شده است، نشان می دهد. کلاس حافظه extern برای دسترسی به متغیرهای سراسری که در فایل های مختلف یک پروژه تعریف شده اند، استفاده می شود. هنگام استفاده از extern نمی توانید به متغیر مقدار اولیه دهید و فقط آن را اعلان می کنید.

از کلاس حافظه extern اغلب در پروژه های بزرگ که از چندین فایل تشکیل می شوند استفاده می شود. مثال زیر به خوبی نحوه استفاده از کلاس حافظه extern را نشان می دهد:

محتوای فایل main.c

محتوای فایل support.c

خط extern void write_extern(); در فایل main.c  تابعی که در فایل support.c تعریف شده است را اعلان می کند و به کامپایلر می گوید که همچنین تابعی وجود دارد. خط extern int count; برای دسترسی به متغیر سراسری count که در فایل main.c تعریف شده است استفاده می شود.

این دو فایل به صورت زیر کامپایل می شوند:

نتیجه کامپایل و اجرای کد بالا:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است