الگوریتم اول

لطفا صبر کنید...

ثابت‌ها و متغیرهای سراسری در ++C

در ++C، متغیرها و ثابت‌ها می‌توانند محلی (Local) یا سراسری (Global) باشند. متغیرهای محلی فقط درون تابع یا بلوک خودشان در دسترس هستند، اما متغیرهای سراسری در کل برنامه قابل استفاده‌اند.

۱. متغیرهای سراسری
متغیرهای سراسری خارج از همه توابع تعریف می‌شوند و در تمام بخش‌های برنامه قابل دسترسی‌اند.

#include <iostream>
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 استفاده می‌شود.

const double PI = 3.14159; // ثابت سراسری
#define GRAVITY 9.81 // ثابت با #define

int main() {
    cout << "Value of PI: " << PI << endl;
    cout << "Gravity: " << GRAVITY << endl;
    return 0;
}

const بهتر از #define است، چون در زمان کامپایل بررسی می‌شود.

۳. استفاده از constexpr
constexpr برای ثابت‌هایی که مقدارشان در زمان کامپایل مشخص می‌شود، استفاده می‌شود.

constexpr int square(int x) {
    return x * x;
}

int main() {
    constexpr int result = square(5);
    cout << "Square of 5: " << result << endl;
    return 0;
}

این روش بهینه‌تر است و پردازش را سریع‌تر می‌کند.

۴. استفاده از extern برای متغیرهای سراسری در فایل‌های مختلف
وقتی یک متغیر سراسری در یک فایل تعریف شده، می‌توان از extern در فایل‌های دیگر برای دسترسی به آن استفاده کرد.

file1.cpp

#include <iostream>
using namespace std;

int globalVar = 20; // تعریف متغیر سراسری

void printVar() {
    cout << "Global Variable: " << globalVar << endl;
}

file2.cpp

#include <iostream>
using namespace std;

extern int globalVar; // اعلام متغیر سراسری

int main() {
    cout << "Accessing globalVar from another file: " << globalVar << endl;
    return 0;
}

با این روش می‌توان یک متغیر را بین فایل‌های مختلف به اشتراک گذاشت.

۵. محدود کردن دسترسی متغیر سراسری به یک فایل
اگر نمی‌خواهید متغیر سراسری در فایل‌های دیگر دیده شود، از static استفاده کنید.

static int localGlobal = 50; // فقط در همین فایل قابل استفاده است

این روش در پروژه‌های بزرگ مفید است.

نتیجه:

  • متغیرهای سراسری در کل برنامه قابل استفاده‌اند، اما بهتر است کمتر از آن‌ها استفاده شود.
  • ثابت‌های سراسری را می‌توان با const، #define یا constexpr تعریف کرد که constexpr بهترین گزینه است.
  • extern برای استفاده از متغیرهای سراسری در فایل‌های دیگر به کار می‌رود.
  • static متغیر سراسری را محدود به همان فایل می‌کند.