دامنه متغیرها در ++C

در این جلسه به بررسی دامنه متغیرها در ++C می‌پردازیم. اگر مطالعه نکردید توصیه می‌کنیم اول مقاله انواع متغیر در ++C را مطالعه کنید. دامنه(scope) ناحیه ای از برنامه است و اگر بخواهیم کلی تر صحبت کنیم، سه مکان وجود دارد که متغیرها را می توان در آنجا اعلان کرد:

  • درون یک تابع یا بلوک که متغیرهای محلی(local variable) نامیده می شوند.
  • در تعریف پارامترهای تابع که پارامترهای رسمی(formal parameters) نامیده می شوند.
  • بیرون همه توابع که متغیرهای سراسری(global variable) نامیده می شوند.

در فصول بعد با توابع و پارامترهای آنها آشنا خواهیم شد. فعلاً اجازه دهید متغیرهای محلی و سراسری را توضیح دهیم.

دامنه متغیرها در ++C

متغیرهای محلی

متغیرهایی که درون یک تابع یا بلوک اعلان می شوند متغیرهای محلی(local variable) نامیده می شوند. این متغیرها تنها توسط دستورات درون یک بلوک یا تابع بکارگرفته می شوند. متغیرهایی محلی برای توابع خارج از خود شناخته شده نیستند. مثال زیر از متغیرهای محلی استفاده می کند.

#include <iostream>
using namespace std;
 
int main () {
   // Local variable declaration:
   int a, b;
   int c;
 
   // actual initialization
   a = 10;
   b = 20;
   c = a + b;
 
   cout << c;
 
   return 0;
}

متغیرهای سراسری

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

مطلب پیشنهادی:  توابع درون خطی در ++C

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

#include <iostream>
using namespace std;
 
// Global variable declaration:
int g;
 
int main () {
   // Local variable declaration:
   int a, b;
 
   // actual initialization
   a = 10;
   b = 20;
   g = a + b;
  
   cout << g;
 
   return 0;
}

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

#include <iostream>
using namespace std;
 
// Global variable declaration:
int g = 20;
 
int main () {
   // Local variable declaration:
   int g = 10;
 
   cout << g;
 
   return 0;
}

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر تولید می شود

10

مقداردهی اولیه به متغیرهای محلی و سراسری

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

نوع داده مقدار اولیه
int 0
char ‘\0’
float 0
double 0
pointer NULL

به عنوان یک تمرین برنامه نویسی خوب، بهتر است متغیرها را به صورت مناسب مقداردهی اولیه کنید،وگرنه گاهی ممکن است نتایج غیرمنتظره پیش بیاید.

مطلب پیشنهادی:  آموزش کار با CMake

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

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