نوع خاص داده ها را مي توان در يک متغير ذخيره کرد. به عنوان مثال: int، float، char و غيره.
کلاس ذخيره سازي دو ويژگي مختلف يک متغير را کنترل مي کند: طول عمر (تعيين اينکه متغير چه مدت مي تواند وجود داشته باشد) و محدوده (تعيين اينکه کدام بخش از برنامه بتواند به آن دسترسي پيدا کند).
بسته به کلاس ذخيره سازي متغير، مي توان آن را به 5 نوع اصلي تقسيم کرد:
متغير تعريف شده در داخل تابع (تعريف شده در داخل بدنه تابع بين براکت ها) متغير محلي يا متغير خودکار(automatic ) ناميده مي شود.
محدوده دسترسي آن تنها محدود به تابع تعريف شده است. به عبارت ساده، متغير محلي مي تواند تنها در داخل تابع قابل دسترسي باشد.
هنگامي که اجراي تابع تمام مي شود، طول عمر متغير محلي به پايان مي رسد (از بين مي رود).
- #include <iostream>
- using namespace std;
- void test();
- int main()
- {
- // local variable to main()
- int var = 5;
- test();
- // illegal: var1 not declared inside main()
- var1 = 9;
- }
- void test()
- {
- // local variable to test()
- int var1;
- var1 = 6;
- // illegal: var not declared inside test()
- cout << var;
- }
متغير var را نمي توان داخل test()و var1 را نمي توان در داخل تابع ()main استفاده کرد.
کليد واژه auto نيز قبل از تعريف متغيرهاي محلي استفاده مي شود: auto int var؛
اما، بعد از C ++ 11، auto معني متفاوتي پيدا کرد و نبايد براي تعريف متغيرهاي محلي استفاده شود.
اگر متغير بيرون از تمام توابع تعريف شود، به آن متغير سراسري مي گوييم.
محدوده دسترسي متغير سراسري کل برنامه است. به اين معني که مي تواند در هر بخش از برنامه مورد استفاده قرار گيرد و تغيير يابد.
به همين ترتيب، زماني که برنامه به پايان برسد، طول عمر متغير هم به پايان مي رسد.
- #include <iostream>
- using namespace std;
- // Global variable declaration
- int c = 12;
- void test();
- int main()
- {
- ++c;
- // Outputs 13
- cout << c <<endl;
- test();
- return 0;
- }
- void test()
- {
- ++c;
- // Outputs 14
- cout << c;
- }
خروجي
13
14
در برنامه بالا c متغير سراسري است.
متغير براي هر دو تابع ()main و ()test در دسترس است.
درباره این سایت