کلاس ذخیره سازی در در ++C

آموزش کلاس های ذخیره سازی در ++C (به زبان ساده)

folderتوابع
commentsبدون دیدگاه
اساطیر زبان

در این آموزش، در مورد کلاس های مختلف ذخیره سازی در ++C یاد خواهید گرفت. یعنی: local, global, static local, register and thread local.

هر متغیر در ++C دارای دو ویژگی است: نوع و کلاس ذخیره سازی.

 


سی پلاس پلاس

توی این پک فوق العاده، سی پلاس پلاس رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با سی پلاس پلاس به عمق فهم برنامه نویسی شیرجه بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

توی این پک فوق العاده، صفرتاصد مبانی برنامه نویسی رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با صفرتاصد مبانی برنامه نویسی اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

نوع خاص داده ها را می توان در یک متغیر ذخیره کرد. به عنوان مثال: int، float، char و غیره.

کلاس ذخیره سازی دو ویژگی مختلف یک متغیر را کنترل می کند: طول عمر (تعیین اینکه متغیر چه مدت می تواند وجود داشته باشد) و محدوده (تعیین اینکه کدام بخش از برنامه بتواند به آن دسترسی پیدا کند).

بسته به کلاس ذخیره سازی متغیر، می توان آن را به ۵ نوع اصلی تقسیم کرد:

متغیر محلی (local variable)

متغیر تعریف شده در داخل تابع (تعریف شده در داخل بدنه تابع بین براکت ها) متغیر محلی یا متغیر خودکار(automatic ) نامیده می شود.

محدوده دسترسی آن تنها محدود به تابع تعریف شده است. به عبارت ساده، متغیر محلی می تواند تنها در داخل تابع قابل دسترسی باشد.

هنگامی که اجرای تابع تمام می شود، طول عمر متغیر محلی به پایان می رسد (از بین می رود).

مثال ۱ : متغیر محلی

  1. #include <iostream>
  2. using namespace std;
  3. void test();
  4. int main()
  5. {
  6. // local variable to main()
  7. int var = 5;
  8. test();
  9. // illegal: var1 not declared inside main()
  10. var1 = 9;
  11. }
  12. void test()
  13. {
  14. // local variable to test()
  15. int var1;
  16. var1 = 6;
  17. // illegal: var not declared inside test()
  18. cout << var;
  19. }

متغیر var را نمی توان داخل test()و var1 را نمی توان در داخل تابع ()main استفاده کرد.

کلید واژه auto نیز قبل از تعریف متغیرهای محلی استفاده می شود: auto int var؛

اما، بعد از C ++ 11، auto معنی متفاوتی پیدا کرد و نباید برای تعریف متغیرهای محلی استفاده شود.

متغیر سراسری (global variable)

اگر متغیر بیرون از تمام توابع تعریف شود، به آن متغیر سراسری می گوییم.

محدوده دسترسی متغیر سراسری کل برنامه است. به این معنی که می تواند در هر بخش از برنامه مورد استفاده قرار گیرد و تغییر یابد.

به همین ترتیب، زمانی که برنامه به پایان برسد، طول عمر متغیر هم به پایان می رسد.

مثال ۲ : متغیر سراسری

  1. #include <iostream>
  2. using namespace std;
  3. // Global variable declaration
  4. int c = 12;
  5. void test();
  6. int main()
  7. {
  8. ++c;
  9. // Outputs 13
  10. cout << c <<endl;
  11. test();
  12. return 0;
  13. }
  14. void test()
  15. {
  16. ++c;
  17. // Outputs 14
  18. cout << c;
  19. }

خروجی

۱۳

۱۴

در برنامه بالا c متغیر سراسری است.

متغیر برای هر دو تابع ()main و ()test در دسترس است.

متغیر محلی ایستا (static local variable)

کلید واژه ی static برای تعریف متغیر ایستا استفاده می شود. برای مثال:

… .. …

int main()

{

static float a;

… .. …

}

متغیر محلی ایستا تنها در داخل تابعی که تعریف شده است، قابل دسترسی است. (مشابه متغیر محلی) اما طول عمرش برابر است با زمانی که تابع فراخوانی می شود تا وقتی برنامه به پایان می رسد.

تفاوت اصلی متغیر محلی و متغیر محلی ایستا این است که مقدار متغیر ایستا تا پایان برنامه از بین نمی رود.

مثال ۳: متغیر محلی ایستا

  1. #include <iostream>
  2. using namespace std;
  3. void test()
  4. {
  5. // var is a static variable
  6. static int var = 0;
  7. ++var;
  8. cout << var << endl;
  9. }
  10. int main()
  11. {
  12. test();
  13. test();
  14. return 0;
  15. }

خروجی

۱

۲

در برنامه بالا، تابع test()، ۲ بار فراخوانی می شود.

در طول اولین فراخوانی، متغیر var به عنوان متغیر ایستا اعلام شده و با ۰ مقدار دهی می شود. سپس ۱ به var اضافه شده که در صفحه نمایش داده می شود.

وقتی تابع ()test پایان یافت، متغیر var هنوز هم وجود دارد، زیرا یک متغیر ایستا است.

در طول فراخوانی دوم، متغیر جدیدی ایجاد نشده است. همان var 1 واحد افزایش می یابد و سپس روی صفحه نمایش داده می شود.

خروجی برنامه فوق اگر var از نوع متغیر ایستا تعریف نشده باشد:

۱

۱

متغیر ثبات(register variable) (حذف شده در C ++ 11)

کلید واژه register برای تعریف متغیرهای ثبات استفاده می شود.

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

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

با این حال، این کلید واژه در C ++ 11 منسوخ شده و نباید مورد استفاده قرار گیرد.

ذخیره سازی محلی thread

ذخیره سازی محلی thread مکانیزمی است که متغیرها را جوری تخصیص می دهد که یک نمونه از متغیر در هر thread موجود باشد.

برای این منظور از کلید واژه ی keyword_local استفاده می شود.

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست