با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند.این جلسه را رو با بحث درمورد حوزه متغیرها در زبان C آغاز می کنیم.سپس با مبحث مقداردهی اولیه به متغیرهای محلی و عمومی به پایان خواهیم رساند.
حوزه در هر برنامه نویسی یک منطقه از برنامه است. جایی که یک متغیرمشخص می تواند وجود داشته باشد و خارج از آن متغیر نمی تواند دسترسی باشد.
سه مکان وجود دارد که متغیر ها را می توان در زبان برنامه نویسی سی اعلام کرد .
داخل یک تابع یا یک بلوک که متغیرهای محلی نامیده می شود.
خارج از تمام توابع که متغیرهای عمومی نامیده می شود.
در تعریف پارامترهای تابع که پارامترهای اصلی نامیده می شوند.
متغیرهایی که در داخل یک تابع یا بلوک اعلام شده متغیرهای محلی نامیده می شوند.
آنها تنها در دستوراتی که درون تابع و یا بلوک کد هستند می توانند استفاده شوند.متغیرهای محلی برای تابع خارج از خود شناخته شده نیستند.
مثال زیر نشان می دهد که چگونه متغیرهای محلی استفاده می شود. در اینجا تمام متغیرهای a، b و c تابع local برای () main هستند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <span class="com">#include</span> <span class="str"><stdio.h></span> <span class="kwd">int</span><span class="pln"> main </span><span class="pun">()</span> <span class="pun">{</span> <span class="com">/* local variable declaration */</span> <span class="kwd">int</span><span class="pln"> a</span><span class="pun">,</span><span class="pln"> b</span><span class="pun">;</span> <span class="kwd">int</span><span class="pln"> c</span><span class="pun">;</span> <span class="com">/* actual initialization */</span><span class="pln"> a </span><span class="pun">=</span> <span class="lit">10</span><span class="pun">;</span><span class="pln"> b </span><span class="pun">=</span> <span class="lit">20</span><span class="pun">;</span><span class="pln"> c </span><span class="pun">=</span><span class="pln"> a </span><span class="pun">+</span><span class="pln"> b</span><span class="pun">;</span><span class="pln"> printf </span><span class="pun">(</span><span class="str">"value of a = %d, b = %d and c = %d\n"</span><span class="pun">,</span><span class="pln"> a</span><span class="pun">,</span><span class="pln"> b</span><span class="pun">,</span><span class="pln"> c</span><span class="pun">);</span> <span class="kwd">return</span> <span class="lit">0</span><span class="pun">;</span> <span class="pun">}</span> |
متغیرهای عمومی خارج از تمام توابع و حوزه، معمولا در بالای برنامه تعریف می شوند. متغیرهای عمومی مقدار خود را تاز مانی که برنامه در حال اجرا باشد، حفظ می کنند. متغیرهای عمومی می توانند در همه توابع و حوزه ها استفاده شوند. به عبارت دیگر، متغیرهای عمومی برای استفاده شدن در کل بخش های برنامه تعریف می شود.
یک متغیر عمومی می تواند توسط هر تابعی قابل دسترسی باشد.به عبارت دیگر، یک متغیر عمومی برای استفاده در کل برنامه شما بعد از اعلان آن در دسترس است. برنامه زیر نشان می دهد که متغیرهای عمومی در یک برنامه چگونه استفاده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> /* global variable declaration */ int g; int main () { /* local variable declaration */ int a, b; /* actual initialization */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; } |
در یک برنامه متغیرهای محلی و سراسری می توانند نام مشابهی داشته باشند، اما در داخل یک حوزه یا تابع متغیر محلی بر متغیر سراسری اولویت دارد.مثال زیر را می بینیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> /* global variable declaration */ int g = 20; int main () { /* local variable declaration */ int g = 10; printf ("value of g = %d\n", g); return 0; } |
هنگامی که کد بالا کامپال شده و اجرا می شود، نتیجه ی زیر را تولید می کند:
1 | value of g = 10 |
پارامترهای یک تابع در حوزه متغیرهای محلی قرار می گیرند و اولویت آن ها از متغیرهای عمومی بیشتر است.مثال را می بینیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> /* global variable declaration */ int a = 20; int main () { /* local variable declaration in main function */ int a = 10; int b = 20; int c = 0; printf ("value of a in main() = %d\n", a); c = sum( a, b); printf ("value of c in main() = %d\n", c); return 0; } /* function to add two integers */ int sum(int a, int b) { printf ("value of a in sum() = %d\n", a); printf ("value of b in sum() = %d\n", b); return a + b; } |
هنگامی که کد بالا کامپال شده و اجرا می شود، نتیجه ی زیر را تولید می کند:
1 2 3 4 | value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in main() = 30 |
هنگام تعریف یک متغیر عمومی اگر به آن مقداری اختصاص نیابد. سیستم به طور خودکار مقدار پیش فرض نوع متغیر را به آن اختصاص می دهد. اما متغیرهای محلی هنگام تعریف شدن توسط سیستم مقداردهی اولیه نمی شوند.
مقدار پیش فرض | نوع داده |
۰ | int |
‘۰/’ | char |
۰ | float |
۰ | double |
NULL | pointer |
توصیه می شود همیشه مقداردهی اولیه به متغیرهای محلی و عمومی و … را مشخص کنید.
زیرا ممکن است با نتایج غیر منتظره ای در هنگام اجرای برنامه رو به رو شوید.
اگر به یک متغیر مقدار اولیه داده نشود.با مقادیر زباله پر خواهد شد.
خوشحالیم ازاینکه در این مجموعه آموزشها همراه ما هستید.بحث رو با حوزه متغیرها در زبان C آغاز و با مقداردهی اولیه به متغیرهای محلی و عمومی به پایان می رسانیم.
در جلسه بعدبه آرایه ها در سی خواهیم پرداخت.