++C/C

متغیرها در زبان C

متغیرها در زبان C :

این مقاله ادامه آموزش زبان برنامه نویسی c می باشد و بحث برنامه نویسی زبان C و پیاده سازی آن را در بر می گیرد. در آخرین آموزش ما Datatypes را در برنامه نویسی C دیده ایم. در این مقاله یکی از مفاهیم اساسی برنامه C که متغیرها در زبان C است را توضیح می دهیم. هدف این آموزش ارائه مثال های آسان و کاربردی برای درک بهتر برنامه نویسی C است.

زمانی که می خواهیم برنامه نویسی زبان C را یاد بگیریم، باید از اصول اولیه شروع کنیم. ابتدا باید متغیرهای زبان C را درک کنیم.

متغیرها در برنامه نویسی C چیست؟

قبل از ادامه  مقاله ، بهتره که به سرعت تفاوت بین طول عمر و محدوده یک متغیر را درک کنیم.

در برنامه نویسی C از متغیرها برای ذخیره موقت داده ها استفاده می شود. متغیرها مانند ظرف هایی هستند که انواع مختلفی از اطلاعات مانند اعداد، کاراکترها یا آرایه ها را در خود جای می دهند.

متغیر یک نام سفارشی تعریف شده توسط کاربر است که به یک مکان حافظه اختصاص داده شده است که به ذخیره برخی داده ها یا مقادیر مانند اعداد، کاراکترها و غیره کمک می کند. در نظر داشته باشید که شما نمی توانید نام کلمه کلیدی را به عنوان نام متغیر اعلام کنید. متغیرها در C با یک نوع داده خاص اعلان می شوند. می تواند انواع مختلفی از داده ها را بر اساس نوع داده در متغیر ذخیره کند و مقدار آن در طول برنامه تغییر کند و همچنین می توان از همان متغیر بارها در طول اجرای برنامه استفاده مجدد کرد.

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

Syntax :


datatype variable_name = value;

قوانین تعریف متغیر ها در زبان C:

  • نام متغیر فقط شامل حروف الفبا، اعداد و زیرخط است.
  • نام متغیر باید با خط زیر یا حروف الفبا شروع شود.
  • از کلمات کلیدی نمیتوان به عنوان نام متغیر استفاده کرد.
  • کاراکترها و فاصله های خاص در نام متغیر مجاز نیستند.

هنگام انجام برنامه نویسی همیشه باید قوانین بالا را رعایت کنید.

نامهای معتبر نامهای نا معتبر
;int name ; int 2
;’char a = ‘c ;char goto
;float sum_result ;double x y

سعی کنید هنگام نامگذاری برای متغیرها از اسامی معنی دار و مرتبط استفاده نمایید این کار کمک بسیار زیادی به خوانایی برنامه شما میکند.

مثال :


#include <stdio.h>

int main()
{
int sum = 5; //here sum is a variable and 5 is the initial value.

printf("Value is %d", sum);

return 0;
}

خروجی :


value is 5

انواع متغیرها در برنامه نویسی C :

به طور معمول میتوان متغیرها را به دو دسته کلی طبقه بندی کرد.

  • متغیر های محلی یا Local
  • متغیر های سراسری یا Global

خب بیاید با هم ویژگیهای هر کدوم رو با هم بررسی کنیم.

متغیر های محلی :

متغیری که در داخل یک بلوک اعلان می شود به عنوان متغیر محلی شناخته می شود. محدوده یک متغیر در بلوکی که در آن اعلان شده است در دسترس است. متغیرهای محلی فقط با دستورات داخل همان بلوک که در آن اعلان شده اند قابل دسترسی هستند. طول عمر یک متغیر زمانی شروع می شود که اجرای کد وارد بلوک شده و در هنگام خروج از بین می رود. متغیرها معمولا در یک پشته  (stack)ذخیره می شوند مگر اینکه جای دیگری برای ذخیره سازی مشخص شده باشند.

مثال 1:

 
#include <stdio.h>
int main() 
{
int a=5; // local variable 
printf("Value of A = %d",a); 
return 0; 
}

 

در برنامه فوق int a در تابع main تعریف شده است. بنابراین، یک متغیر محلی برای تابع main میباشد. ما نمی توانیم از خارج از تابع اصلی به متغیر a دسترسی داشته باشیم.

مثال 2 :


#include <stdio.h>

int main()
{
int a=5; // local variable, dspworld.ir can be accessed only from main function

if( a == 5 )
{
int b = 10; // local variable, can be accessed only from if condition block
b = 12;
printf("Value of B = %d\n",b);
printf("(Inside If) Value of A = %d\n",a);
}

//here we cannot acceess the variable b dspworld.ir

printf("Value of A = %d\n",a);

return 0;
}

در برنامه فوق int a در تابع main تعریف شده است. بنابراین، این یک متغیر محلی برای تابع main است.  در این برنامه نمی توانیم از خارج از تابع main به متغیر a دسترسی پیدا کنیم. و int b در داخل شرط ()if تعریف شده است. در نتیجه، ما فقط می توانیم از داخل ()if به آن دسترسی داشته باشیم.

خروجی :

نوشته های مشابه

Value of B = 12
(Inside If) Value of A = 5
Value of A = 5

مثال 3 :


#include <stdio.h>

int main()
{
int a=5; // local variable, can be accessed only from main function

if( a == 5 )
{
int a = 10; // local variable with same name, can be accessed only from if condition block
printf("(Inside If) Value of A = %d\n",a);
}

printf("Value of A = %d\n",a);

return 0;
}

در برنامه فوق int a در تابع main تعریف شده است. بنابراین، یک متغیر محلی برای تابع main است. ما نمی توانیم از خارج از تابع اصلی به این متغیر a دسترسی پیدا کنیم. و یک int دیگر در داخل شرط ()if تعریف شده است. در این حالت، ()if از متغیری استفاده خواهد کرد که در داخل ()if تعریف شده است.  در نتیجه نمی تواند به int a که در تابع main تعریف شده است دسترسی پیدا کند. زیرا کامپایلر به متغیر محلی که اخیراً ایجاد شده است اولویت خواهد داد.


(Inside If) Value of A = 10
Value of A = 5

متغیر های سراسری یا global :

در زبان برنامه نویسی C، متغیرهای سراسری متغیرهایی هستند که توسط هر تابع یا بلوک کد در یک برنامه قابل دسترسی و تغییر هستند. آنها خارج از هر تابعی، معمولاً در بالای یک فایل، اعلان می شوند و دامنه سراسری دارند. این بدان معنی است که آنها می توانند در کل برنامه استفاده شوند. با این حال، توجه به این نکته ضروری است که استفاده از متغیرهای سراسری باید با احتیاط انجام شود، زیرا می توانند منجر به مسائل بالقوه ای مانند نام های تکراری و مشکلات در ردیابی تغییرات متغیر شوند.

مثال :


#include <stdio.h>

int a = 10; // global variable

int fun()
{
printf("(func)Value = %d\n", a);
}
int main()
{
fun();
printf("(main)Value = %d\n", a);
return 0;
}

در برنامه فوق، متغیر سراسری ‘a’ را ایجاد کرده ایم. به این متغیر میتوتن در هر نقطه از برنامه دسترسی داشت و مقدار آن را تغییر داد. اگر بخواهیم از فایل دیگری در همان برنامه به این متغیر دسترسی داشته باشیم، باید از کلمه کلیدی extern استفاده کنیم.

(func)Value = 10
(main)Value = 10

سوالات متداول :

  • آیا می توانیم مقدار متغیر را هر چند بار در برنامه C تغییر دهیم؟

بله، مقدار یک متغیر را می توان چندین بار در یک برنامه C تغییر داد. برای مرجع خود برنامه زیر را ببینید.

  • آیا مقدار اولیه همیشه هنگام ایجاد متغیرها در C مورد نیاز است؟

    خیر نیاز نیست ولی بهتر است که با یک مقدار مناسب و پیش فرض مقدار دهی گردد.

  • اگر متغیر در زمان اعلام هیچ مقدار اولیه ای نداشته باشد، مقدار اولیه متغیر چقدر است؟

    اگر متغیری در زمان اعلام مقدار اولیه نداشته باشد و یک متغیر محلی باشد، دارای مقدار اولیه تعریف نشده (مقدار Garbage) خواهد بود. اگر متغیری در زمان اعلان مقدار اولیه نداشته باشد و یک متغیر سراسری باشد، دارای مقدار اولیه صفر (0) خواهد بود.

  • آیا می توانیم چندین متغیر محلی با یک نام در C ایجاد کنیم؟

    خیر، در زبان برنامه نویسی C، نمی توانید چندین متغیر محلی با یک نام در یک محدوده ایجاد کنید. هر متغیر در محدوده باید یک نام منحصر به فرد داشته باشد تا از ابهام جلوگیری شود و از اجرای صحیح برنامه اطمینان حاصل شود. اگر بخواهید چندین متغیر را با یک نام در یک محدوده اعلام کنید، منجر به خطای کامپایل می شود. مهم است که نام های معنی دار و متمایز برای متغیرها انتخاب کنید تا کد شما خواناتر و قابل نگهداری تر شود.

  • آیا می توانیم یک متغیر محلی و یک متغیر سراسری با نام یکسان در C ایجاد کنیم؟

    بله، امکان ایجاد یک متغیر محلی و یک متغیر سراسری با همین نام در زبان برنامه نویسی C وجود دارد. با این حال، انجام این کار توصیه نمی شود زیرا ممکن است منجر به سردرگمی شود و درک و نگهداری کد را دشوار کند.

  • آیا می توانم مقادیر float را به متغیرهای نوع داده int در C اختصاص دهم؟

    بله، می توانید مقادیر float را به متغیرهای نوع داده int در C اختصاص دهید. با این حال، مقدار float به طور ضمنی به یک عدد صحیح تبدیل می شود. قسمت اعشاری مقدار شناور کوتاه می شود، به این معنی که به نزدیکترین عدد صحیح به پایین گرد می شود. به عنوان مثال، اگر مقدار float 3.9 را به یک متغیر int اختصاص دهید، مقدار ذخیره شده در متغیر 3 خواهد بود. اما انجام این کار توصیه نمی شود. برخی از کامپایلرها به شما هشدار می دهند.و باید آن را typecast کنید. همیشه توصیه می شود که یک مقدار نوع داده را به همان متغیر نوع داده اختصاص دهید.

نوشته های مشابه

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

همچنین ببینید
بستن
دکمه بازگشت به بالا