وقتی در تابعی، متغیری به صورت static تعریف شود، مقدار این متغیر در هنگام خروج از تابع حفظ شده و در مراجعات بعدی به تابع، مقدار آن متغیر آخرین مقدار تخصیص یافته به آن در فراخوانی قبلی تابع می باشد.
متغیرهای volatile، متغیرهایی هستند که کامپایلر هیچ عمل Optimization روی آن انجام نمی دهد.. در صورتی که مقدار متغیری در وال وقفه تغییر داده می شود، بهتر است آن متغیر را با استفاده از کلمه کلیدی volatile از نادیده گرفتن توسط کامپایلر، محافظت کنید.
عموما کلمه کلیدی extern برای دسترسی به متغیرهایی عمومیای استفاده می شود، که در فایل دیگری تعریف شده است.
درست |
نادرست |
// first.c
#include<stdio.h>
static int x=45;
static void display() { printf("\nHello World"); }
void show() { printf("\n%d",x); display(); } |
// first.c
#include<stdio.h>
static int x=45;
static void display() { printf("\nHello World"); } |
//main.c
#include<stdio.h>
extern void show();
void main() { show(); } |
// main.c
#include<stdio.h>
extern int x; extern void display();
void main() { printf("\n%d",x); display(); } |