1- یک متغیر استاتیک داخل یک تابع که مقادیرشو در فراخوانیها حفظ میکنه.
مثال:
#include <stdio.h>
void foo()
{
int a = 10;
static int sa = 10;
a += 5;
sa += 5;
printf("a = %d, sa = %d\n", a, sa);
}
int main()
{
int i;
for (i = 0; i < 10; ++i)
foo();
}
خروجی:
a = 15, sa = 15
a = 15, sa = 20
a = 15, sa = 25
a = 15, sa = 30
a = 15, sa = 35
a = 15, sa = 40
a = 15, sa = 45
a = 15, sa = 50
a = 15, sa = 55
a = 15, sa = 60
که این کاربرد داره برای وقتی که تابع نیاز داره در فراخوانیهای مختلف حالتی رو حفظ کنه . در عین حال نمیخوایم از متغیرهای سراسری استفاده بشه.
2-یک متغیر سراسری استاتیک یا یک تابع که تنها در فایلی که در اون اعلان شده دیده میشه.
که این مورد برای داشتن خصوصیت کنترل دسترسی استفاده میشه. مثلا وقتی شما فایلی بصورت a.c دارین که قابلیتی رو پیادهسازی میکنه، معمولا فقط تعدادی تابع عمومی رو در معرض دید کاربر میذاره. بقیه توابعش باید استاتیک باشن تا کاربر نتونه به اونها دسترسی داشته باشه.