با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. در این مجموعه آموزشها قصد داریم آموزش برنامه نویسی به زبان C رو تقدیم حضورتون کنیم. ادامه می دهیم سری آموزشهای زبان سی را با بررسی انواع کلاس های ذخیره سازی در C از جمله کلاس ذخیره استاتیک static در C و کامپایل و اجرای برنامه در C .
کلاس های ذخیره سازی در C دامنه (میدان) و عمر متغیرها و / یا توابع در یک برنامه C را تعریف می کند. آنها مقدمند بر انوعی که تغییر می کنند. ما چهار کلاس ذخیره سازی مختلف در برنامه C داریم .
auto
register
static
extern
کلاس ذخیره سازی خودکار کلاس پیش فرض ذخیره سازی برای همه متغیرهای محلی است.
1 2 3 4 | { int mount; auto int month; } |
مثال فوق دو متغیر را در کلاس ذخیره سازی مشابه تعریف می کند. ‘auto’ تنها می تواند در داخل توابع، یعنی متغیرهای محلی استفاده شود.
کلاس ذخیره سازی register برای تعریف متغیرهای محلی که باید به جای رم ذخیره شوند استفاده می شود.
در واقع این به این معنی است که متغیر دارای حداکثر اندازه برابر با اندازه register (معمولا یک کلمه است) می باشد.
همچنین نمی تواند اپراتور “&” را به آن اعمال کرد (همانطور که محل حافظه ندارد).
1 2 3 | { register int miles; } |
register باید فقط برای متغیرهایی که نیاز به دسترسی سریع دارد مورد استفاده قرار گیرد.مانند شمارنده .
لازم به ذکر است که تعریف «register » به این معنا نیست که متغیر در یک register ذخیره می شود.
در واقع این بدان معنی است که متغیر می تواند در یک register بسته به سخت افزار ذخیره شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> /* function declaration */ void func(void); static int count = 5; /* global variable */ main() { while(count--) { func(); } return 0; } /* function definition */ void func( void ) { static int i = 5; /* local static variable */ i++; printf("i is %d and count is %d\n", i, count); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> /* function declaration */ void func(void); static int count = 5; /* global variable */ main() { while(count--) { func(); } return 0; } /* function definition */ void func( void ) { static int i = 5; /* local static variable */ i++; printf("i is %d and count is %d\n", i, count); |
1 2 3 4 5 | i is 6 and count is 4 i is 7 and count is 3 i is 8 and count is 2 i is 9 and count is 1 i is 10 and count is 0 |
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int count ; extern void write_extern(); main() { count = 5; write_extern(); } |
دومین پرونده: support.c
1 2 3 4 5 6 7 | #include <stdio.h> extern int count; void write_extern(void) { printf("count is %d\n", count); } |
1 | $gcc main.c support.c |
1 | count is 5 |
خوشحالیم ازاینکه در این مجموعه آموزشها همراه ما هستید. کلاس های ذخیره سازی در C و auto ,register و exterk را مطالعه نمودیم.در جلسه بعد به بیان اپراتورها در C خواهیم پرداخت.