ثابتها و متغیرهای سراسری در ++C
در ++C، متغیرها و ثابتها میتوانند محلی (Local) یا سراسری (Global) باشند. متغیرهای محلی فقط درون تابع یا بلوک خودشان در دسترس هستند، اما متغیرهای سراسری در کل برنامه قابل استفادهاند.
۱. متغیرهای سراسری
متغیرهای سراسری خارج از همه توابع تعریف میشوند و در تمام بخشهای برنامه قابل دسترسیاند.
using namespace std;
int globalVar = 100; // متغیر سراسری
void func() {
cout << "Global Variable in func: " << globalVar << endl;
}
int main() {
cout << "Global Variable in main: " << globalVar << endl;
func();
return 0;
}
استفادهی بیش از حد از متغیرهای سراسری توصیه نمیشود، چون اشکالزدایی را سخت میکند.
۲. ثابتهای سراسری
برای تعریف ثابتهای سراسری که مقدارشان تغییر نمیکند، از const یا #define استفاده میشود.
#define GRAVITY 9.81 // ثابت با #define
int main() {
cout << "Value of PI: " << PI << endl;
cout << "Gravity: " << GRAVITY << endl;
return 0;
}
const بهتر از #define است، چون در زمان کامپایل بررسی میشود.
۳. استفاده از constexpr
constexpr برای ثابتهایی که مقدارشان در زمان کامپایل مشخص میشود، استفاده میشود.
return x * x;
}
int main() {
constexpr int result = square(5);
cout << "Square of 5: " << result << endl;
return 0;
}
این روش بهینهتر است و پردازش را سریعتر میکند.
۴. استفاده از extern برای متغیرهای سراسری در فایلهای مختلف
وقتی یک متغیر سراسری در یک فایل تعریف شده، میتوان از extern در فایلهای دیگر برای دسترسی به آن استفاده کرد.
file1.cpp
using namespace std;
int globalVar = 20; // تعریف متغیر سراسری
void printVar() {
cout << "Global Variable: " << globalVar << endl;
}
file2.cpp
using namespace std;
extern int globalVar; // اعلام متغیر سراسری
int main() {
cout << "Accessing globalVar from another file: " << globalVar << endl;
return 0;
}
با این روش میتوان یک متغیر را بین فایلهای مختلف به اشتراک گذاشت.
۵. محدود کردن دسترسی متغیر سراسری به یک فایل
اگر نمیخواهید متغیر سراسری در فایلهای دیگر دیده شود، از static استفاده کنید.
این روش در پروژههای بزرگ مفید است.
نتیجه:
- متغیرهای سراسری در کل برنامه قابل استفادهاند، اما بهتر است کمتر از آنها استفاده شود.
- ثابتهای سراسری را میتوان با const، #define یا constexpr تعریف کرد که constexpr بهترین گزینه است.
- extern برای استفاده از متغیرهای سراسری در فایلهای دیگر به کار میرود.
- static متغیر سراسری را محدود به همان فایل میکند.
