Storage Class در برنامه نویسی C

رتبه: 0 ار 0 رای sssss
سی استوریج
نویسنده: تیم تولید محتوا زمان مطالعه 3 دقیقه
Banner Image

در این آموزش با دامنه و طول عمر متغیرهای محلی و سراسری و همچنین متغیرهای استاتیک و ثبات نیز آشنا خواهید شد.

هر متغیر در برنامه نویسی C دو ویژگی دارد: typeو storage class.

type یا نوع به نوع داده یک متغیر اشاره دارد و storage class یا کلاس حافظه برای تعیین دامنه، میدان دید و طول عمر یک متغیر می باشد.

۴ نوع کلاس حافظه وجود دارد:

  • اتوماتیک (automatic)
  • خارجی (external)
  • استاتیک (external)
  • ثبات (register)

متغیر محلی

به متغیرهای تعریف شده در داخل یک بلوک متغیرهای اتوماتیک یا محلی (Local Variable) گفته می شود. متغیرهای محلی فقط در داخل بلوکی که در آن تعریف شده اند، وجود دارند و قابل دسترسی اند. مثال،

#include <stdio.h>

int main(void) {

for (int i = 0; i < 5; ++i) {

printf(“C programming”);

}

// در این نقطه تعریف نشده است i خطا می دهد! متغیر

printf(“%d”, i);

return 0;

}

هنگامی که برنامه بالا را اجرا کنید، با خطای “undeclared identifier i” مواجه خواهید شد. به این دلیل که متغیر i در بلوک حلقه for تعریف شده است و خارج از آن ناموجود و غیرقابل دسترس است. یک مثال دیگر،

int main() {

int n1; // است main() یک متغیر محلی در تابع n1 متغیر

}

void func() {

int n2; // است func() یک متغیر محلی در تابع n2 متغیر

}

در مثال بالا متغیر n1 یک متغیر محلی برای main() و n2 یک متغیر محلی برای تابع func() است. یعنی نمی توانید به متغیر n1 در داخل func() دسترسی پیدا کنید زیرا در داخل main() تعریف شده و فقط در این تابع موجود و قابل دسترس است. به همین ترتیب نمی توانید به متغیر n2 در تابع main() دسترسی پیدا کنید چون فقط در داخل func() وجود دارد.

متغیر سراسری

متغیرهایی که خارج از همه توابع تعریف می شوند به عنوان متغیرهای خارجی یا سراسری (Global) شناخته می شوند. این متغیرها در هر تابعی و در همه جای برنامه قابل دسترس هستند.

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

#include <stdio.h>

void display();

int n = 5; // متغیر سراسری

int main()

{

++n;

display();

return 0;

}

void display()

{

++n;

printf(“n = %d”, n);

}

خروجی

n = 7

متغیر n خارج و بالای همه توابع تعریف شده است. دستور ++n در تابع main() یک واحد به این متغیر اضافه می کند. در ادامه در تابع display نیز با دستور ++n دوباره به متغیر سراسری n دسترسی شده و یک واحد دیگر به آن اضافه شده است، اکنون مقدار این متغیر برابر با ۷ است که در خروجی چاپ شده است.

فرض کنید یک متغیر سراسری در file1 تعریف کرده اید اگر سعی کنید از این متغیر در یک فایل دیگر مثل file2 استفاده کنید، کامپایلر ایراد می گیرد. برای حل این مشکل از کلمه کلیدی extern در file2 استفاده می شود که نشان می دهد ایت یک متغیر خارجی است و در فایل دیگری تعریف شده است.

متغیر ثبات

از کلمه کلیدی register برای تعریف متغیرهای ثبات استفاده می شود. تصور می شد که متغیرهای register سریعتر از متغیرهای محلی باشند. کامپایلرهای مدرن در بهینه سازی کد بسیار خوب عمل می کنند و احتمال خیلی کمی وجود دارد که با استفاده از متغیرهای ثبات برنامه سریعتر شود.

متغیر استاتیک

static int i;

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

مثال ۲: متغیر استاتیک

include <stdio.h>

void display();

int main()

{

display();

display();

}

void display()

{

static int c = 1;

c += 5;

printf(“%d “,c);

}

خروجی

۶ ۱۱

در اولین فراخوانی تابع متغیر c با ۱ مقداردهی اولیه شده سپس مقدار آن با عدد ۵ جمع می شود. اکنون مقدار متغیر c برابر با ۶ است که روی صفحه چاپ می شود.

در طی فراخوانی دوم تابع، متغیر c دوباره مقداردهی اولیه نمی شود چون یک متغیر استاتیک است بلکه مقدار قبلی آن ۵ واحد افزایش یافته و به ۱۱ می رسد و دوباره چاپ می شود.

profile name
تیم تولید محتوا

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه
آموزش برنامه نویسی سی پلاس پلاس
آموزش برنامه نویسی سی پلاس پلاس
قیمت محصول 80٪ 70,000 تومان 350,000
ادامه مطلب
صفر تا صد آموزش HTML & CSS به زبان ساده
صفر تا صد آموزش HTML & CSS به زبان ساده
قیمت محصول 45٪ 149,000 تومان 269,000
ادامه مطلب

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

1 2 3 4 5

0 نظر درباره «Storage Class در برنامه نویسی C»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید