سفارش تبلیغ
صبا ویژن

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

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

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

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

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

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

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

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

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

  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)

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

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

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

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

  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. }

خروجی

13

14

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

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