آموزش زبان C (قسمت هشتم:static)

به آموزش زبان C (قسمت هشتم – Static) خوش اومدید.

بخش هشتم:ثابتها Static:

واژه static یک کلمه کاربردی (Keyword) در زبان برنامه نویسی C است. و آن می تواند برای متغیرها و توابع به کار رود.

منظور از یک متغیر ثابت چیست؟

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

به عنوان مثال سناریوی زیر را در نظر بگیرید – فرض کنید می خواهیم تعداد دوندگان شرکت کننده در یک مسابقه ی دو را بشماریم:

#include<stdio.h>
int runner() {
    int count = ۰;
    count++;
    return count;
}
int main()
{
    printf("%d ", runner());
    printf("%d ", runner());
    return ۰;
}

می بینید که متغیر count آپدیت نمیشه و به محض اینکه printf اول کارش تمام شه از حافظه پاک میشه و printf دوم که بخواد اجرا بشه باید دوباره از ضفر شروع به خواندن بکند. حالا اگه از متغیر ثابت (Static) استفاده کنیم داریم:

#include<stdio.h>
int runner()
{
    static int count = ۰;
    count++;
    return count;
}
int main()
{
    printf("%d ", runner());
    printf("%d ", runner());
    return ۰;
}

در واقع در مثال بالا با تعریف متغیر count به صورت ثابت (static). تابع print دوم که وقتی می خواهد اجرا شود مقدار count را از ادامه اجرای printf قبل می شمارد.

اما منظور از یک تابع ثابت چیست؟

به صورت پیش فرض، توابع در زبان C به صورت جهانی (global) تعریف می شوند و ما اگر یک تابع را به صورت static تعریف کنیم آنگاه آن تابع فقط در آن فایل کاربرد دارد و در جاهای دیگر نمی توان از آن استفاده کرد.مثال زیر:

static void fun(void) {
   printf("I am a static function.");
}

تفاوت متغیرهای ثابت (Static) و عمومی (Global):

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

تمرین:

در کد زیر، سعی کنید جمع اعداد را با استفاده از کلمه static محاسبه کنید:

#include <stdio.h> 
int sum (int num) {
       /**
       * find sum to n numbers
       */
   }
int main() {
       printf("%d ",sum(55));
       printf("%d ",sum(45));
       printf("%d ",sum(50));
       return 0;
   }

 پایان آموزش زبان C (قسمت هشتم – Static)

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

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

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...