کلاسهای حافظه در C — چهار سبک نگهداری متغیرها با مثالهای واضح مدیر ارشد رایشمند / یکشنبه, 08 اسفند,1395 / دستهها: آموزش برنامه نویسی, آموزش زبان برنامه نویسی سی C سلام رفقای برنامهنویس! توی این مقاله قراره با یه مفهوم مهم آشنا بشیم: Storage Class یا کلاس حافظه در زبان برنامهنویسی C. هر متغیر نهتنها یه نوع داده داره، بلکه یه کلاس حافظه هم داره که مشخص میکنه متغیر تا کجا قابل دسترسه و چقدر عمر میکنه. چهار کلاس حافظه در C auto یا اتوماتیک extern یا خارجی (سراسری) static یا ایستا register یا ثبات 🔸 متغیر محلی (Automatic) متغیرهایی که داخل یک بلوک مثل حلقه یا تابع تعریف میشن، کلاس حافظهشون اتوماتیکه و فقط داخل همون محدوده قابل استفادهن. #include <stdio.h> int main(void) { for (int counter = 0; counter < 3; ++counter) { printf("Looping\n"); } // printf("%d", counter); // خطا: متغیر خارج از محدودهاش استفاده شده return 0; } تو این مثال، متغیر counter داخل بلوک حلقه تعریف شده و بیرون از اون قابل دسترس نیست. 🔹 متغیر سراسری (External) اگه متغیر خارج از همه توابع تعریف بشه، بهش میگن متغیر سراسری و در کل برنامه قابل استفادهست. #include <stdio.h> int data = 10; // متغیر سراسری void show(); int main() { ++data; show(); return 0; } void show() { ++data; printf("data = %d\n", data); } خروجی: data = 12 اگه بخوای یه متغیر سراسری رو از فایل دیگهای استفاده کنی، از کلمه کلیدی extern استفاده میکنی. اینطوری کامپایلر میفهمه که متغیر تو یه فایل دیگه تعریف شده. 🔸 متغیر ثبات (Register) با کلمه کلیدی register میتونی به کامپایلر پیشنهاد بدی که متغیر رو توی ثبات CPU ذخیره کنه، برای دسترسی سریعتر. مثلاً: register int speedCounter; البته کامپایلرهای امروزی خودشون خیلی خوب بهینهسازی انجام میدن و این دستور اغلب نادیده گرفته میشه. 🔹 متغیر استاتیک (Static) با static متغیر طوری تعریف میشه که عمرش تا پایان اجرای برنامه باقی میمونه، حتی اگه داخل تابع باشه. مثال: متغیر استاتیک در تابع #include <stdio.h> void counterUp(); int main() { counterUp(); counterUp(); return 0; } void counterUp() { static int level = 2; // فقط بار اول مقداردهی میشه level += 4; printf("level = %d\n", level); } خروجی: level = 6 level = 10 همونطور که میبینی، مقدار متغیر level بعد از اولین فراخوانی تابع حفظ میشه و تغییرات توی فراخوانیهای بعدی ادامه پیدا میکنن. 👀 جمعبندی کلاس حافظه دامنه طول عمر auto بلوک فعلی تا پایان بلوک extern همه فایلها کل برنامه static فایل / بلوک تا پایان برنامه register بلوک فعلی تا پایان بلوک امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است. توابع بازگشتی در C — چطور تابع خودش را صدا میزند؟ آموزش اعداد پرینت 59 رتبه بندی این مطلب: بدون رتبه کلمات کلیدی: آموزش زبان برنامه نویسی سی مدیر ارشد رایشمندمدیر ارشد رایشمند سایر نوشته ها توسط مدیر ارشد رایشمند تماس با نویسنده مطالب مرتبط توابع بازگشتی در C — چطور تابع خودش را صدا میزند؟ چهار روش تعریف تابع در C برای بررسی عدد اول — با مثالهای مرحلهبهمرحله توابع تعریفشده توسط کاربر در زبان C به همراه آموزش و مثال تابع در برنامهنویسی C آموزش کامل به همراه مثال دستور goto در برنامه نویسی C نوشتن یک نظر نام: لطفا نام خود را وارد نمایید. ایمیل: لطفا یک آدرس ایمیل وارد نمایید لطفا یک آدرس ایمیل معتبر وارد نمایید نظر: لطفا یک نظر وارد نمایید موافقم این فرم نام، ایمیل، آدرس IP و محتوای شما را جمعآوری میکند تا بتوانیم نظرات درج شده در وبسایت را پیگیری کنیم. برای اطلاعات بیشتر خطمشی رازداری و شرایط استفاده< /a> که در آن اطلاعات بیشتری در مورد مکان، چگونگی و چرایی ذخیره داده های شما دریافت خواهید کرد. شما باید این قوانین را بخوانید و قبول کنید. افزودن نظر
سلام رفقای برنامهنویس! توی این مقاله قراره با یه مفهوم مهم آشنا بشیم: Storage Class یا کلاس حافظه در زبان برنامهنویسی C. هر متغیر نهتنها یه نوع داده داره، بلکه یه کلاس حافظه هم داره که مشخص میکنه متغیر تا کجا قابل دسترسه و چقدر عمر میکنه. چهار کلاس حافظه در C auto یا اتوماتیک extern یا خارجی (سراسری) static یا ایستا register یا ثبات 🔸 متغیر محلی (Automatic) متغیرهایی که داخل یک بلوک مثل حلقه یا تابع تعریف میشن، کلاس حافظهشون اتوماتیکه و فقط داخل همون محدوده قابل استفادهن. #include <stdio.h> int main(void) { for (int counter = 0; counter < 3; ++counter) { printf("Looping\n"); } // printf("%d", counter); // خطا: متغیر خارج از محدودهاش استفاده شده return 0; } تو این مثال، متغیر counter داخل بلوک حلقه تعریف شده و بیرون از اون قابل دسترس نیست. 🔹 متغیر سراسری (External) اگه متغیر خارج از همه توابع تعریف بشه، بهش میگن متغیر سراسری و در کل برنامه قابل استفادهست. #include <stdio.h> int data = 10; // متغیر سراسری void show(); int main() { ++data; show(); return 0; } void show() { ++data; printf("data = %d\n", data); } خروجی: data = 12 اگه بخوای یه متغیر سراسری رو از فایل دیگهای استفاده کنی، از کلمه کلیدی extern استفاده میکنی. اینطوری کامپایلر میفهمه که متغیر تو یه فایل دیگه تعریف شده. 🔸 متغیر ثبات (Register) با کلمه کلیدی register میتونی به کامپایلر پیشنهاد بدی که متغیر رو توی ثبات CPU ذخیره کنه، برای دسترسی سریعتر. مثلاً: register int speedCounter; البته کامپایلرهای امروزی خودشون خیلی خوب بهینهسازی انجام میدن و این دستور اغلب نادیده گرفته میشه. 🔹 متغیر استاتیک (Static) با static متغیر طوری تعریف میشه که عمرش تا پایان اجرای برنامه باقی میمونه، حتی اگه داخل تابع باشه. مثال: متغیر استاتیک در تابع #include <stdio.h> void counterUp(); int main() { counterUp(); counterUp(); return 0; } void counterUp() { static int level = 2; // فقط بار اول مقداردهی میشه level += 4; printf("level = %d\n", level); } خروجی: level = 6 level = 10 همونطور که میبینی، مقدار متغیر level بعد از اولین فراخوانی تابع حفظ میشه و تغییرات توی فراخوانیهای بعدی ادامه پیدا میکنن. 👀 جمعبندی کلاس حافظه دامنه طول عمر auto بلوک فعلی تا پایان بلوک extern همه فایلها کل برنامه static فایل / بلوک تا پایان برنامه register بلوک فعلی تا پایان بلوک امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است.