در زبان C، ایجاد یک متغیر به معنای تعریف (Declaration) و در صورت نیاز مقداردهی اولیه (Initialization) آن است. فرآیند ایجاد متغیر شامل مشخص کردن نوع داده و نام متغیر میباشد. C قوانین مشخصی برای نحوهٔ ایجاد متغیرها دارد که در این درس بهطور کامل بررسی میشود.
سادهترین روش برای ایجاد یک متغیر، استفاده از قالب زیر است:
type variable_name;
int count; // ایجاد متغیر صحیح به نام count float price; // ایجاد متغیر اعشاری به نام price char letter; // ایجاد متغیر کاراکتری به نام letter double balance; // ایجاد متغیر اعشاری با دقت بالا به نام balance
این دستورات فقط متغیر را تعریف میکنند، اما به آن مقدار اولیهای نمیدهند. مقدار این متغیرها تعریفنشده (Uninitialized) خواهد بود و شامل هر مقداری که قبلاً در آن آدرس حافظه بوده، میشود.
برای اینکه متغیر بلافاصله پس از ایجاد، مقدار مشخصی داشته باشد، میتوان آن را مقداردهی اولیه کرد:
type variable_name = value;
int age = 25; // متغیر صحیح با مقدار 25 float temperature = 36.5; // متغیر اعشاری با مقدار 36.5 char grade = 'A'; // متغیر کاراکتری با مقدار 'A' double pi = 3.1415926535; // متغیر double با مقدار عدد پی
نکته مهم: مقداردهی اولیه یک روش امنتر است زیرا از خواندن مقادیر تصادفی (Garbage Values) جلوگیری میکند. همیشه سعی کنید متغیرها را هنگام ایجاد، مقداردهی اولیه کنید .
C اجازه میدهد چندین متغیر از یک نوع را در یک خط تعریف کنید. این کار با جدا کردن نام متغیرها با کاما (,) انجام میشود:
int x, y, z; // سه متغیر صحیح بدون مقداردهی float a, b, c; // سه متغیر اعشاری بدون مقداردهی // مقداردهی همزمان چند متغیر int p = 10, q = 20, r = 30; // سه متغیر با مقادیر مختلف
همچنین میتوان برخی را مقداردهی کرد و برخی را نه:
int m = 5, n, o = 8; // m=5، n بدون مقدار، o=8
برای ایجاد متغیرهایی که مقدارشان پس از تعیین قابل تغییر نباشد، از کلمهٔ کلیدی const استفاده میشود:
const int MAX_USERS = 100; // ثابت صحیح const float GRAVITY = 9.81; // ثابت اعشاری const char NEWLINE = '\n'; // ثابت کاراکتری // MAX_USERS = 200; // خطا: نمیتوان مقدار const را تغییر داد
نکته حرفهای: ثابتها معمولاً با حروف بزرگ نوشته میشوند تا از متغیرهای معمولی قابل تشخیص باشند. این یک قرارداد رایج در برنامهنویسی C است .
برای تغییر محدوده یا اندازهٔ متغیرها، میتوان از اصلاحکنندههایی مانند short, long, signed, unsigned استفاده کرد:
unsigned int positive = 40000; // فقط اعداد مثبت short int small_number = 32000; // عدد با اندازهٔ کوچک long int big_number = 1000000000L; // عدد با اندازهٔ بزرگ unsigned long int very_big = 4000000000UL; // ترکیبی از اصلاحکنندهها
| ترکیب اصلاحکننده | توضیح | مثال مقدار |
|---|---|---|
unsigned int | اعداد صحیح بدون علامت | unsigned int u = 300; |
short int | اعداد صحیح با اندازهٔ کوچک | short int s = 1000; |
long int | اعداد صحیح با اندازهٔ بزرگ | long int l = 1000000L; |
unsigned short | اعداد کوچک بدون علامت | unsigned short us = 60000; |
long long int | اعداد بسیار بزرگ (C99 به بعد) | long long int ll = 10000000000LL; |
نکته: پسوندهای
LوULوLLبرای مشخص کردن نوع دقیق عدد در زمان کامپایل استفاده میشوند .
متغیرهایی که در داخل یک تابع یا بلوک ایجاد میشوند:
#include <stdio.h> int main() { int local_var = 10; // متغیر محلی در تابع main if (local_var > 5) { int block_var = 20; // متغیر محلی در بلوک if printf("%d\n", block_var); } // block_var اینجا قابل دسترس نیست return 0; }
متغیرهایی که خارج از تمام توابع ایجاد میشوند:
#include <stdio.h> int global_counter = 0; // متغیر سراسری void increment() { global_counter++; // قابل دسترس در تمام توابع } int main() { printf("Initial: %d\n", global_counter); increment(); printf("After increment: %d\n", global_counter); return 0; }
auto و register (اختیاری)C دارای کلمات کلیدی auto و register برای کنترل نحوهٔ ذخیرهسازی متغیرهاست. این موارد در برنامهنویسی مدرن کمتر استفاده میشوند، اما آشنایی با آنها مفید است:
auto (پیشفرض برای متغیرهای محلی)auto int x = 10; // همانند int x = 10; (auto پیشفرض است)
register (درخواست ذخیره در رجیستر CPU)register int counter = 0; // درخواست ذخیره در رجیستر برای دسترسی سریعتر
نکته: کامپایلرهای مدرن معمولاً خودشان بهینهسازی میکنند و استفاده از
registerتأثیر چندانی ندارد .
int x; // مقداردهی نشده printf("%d", x); // خطرناک: مقدار تصادفی چاپ میشود
int 123abc; // ❌ خطا: شروع با عدد int my-var; // ❌ خطا: استفاده از خط تیره (-) int int; // ❌ خطا: کلمهٔ کلیدی
int num = 3.14; // هشدار: مقدار اعشاری به int تبدیل میشود (3) char ch = "A"; // ❌ خطا: نمیتوان رشته را به کاراکتر نسبت داد
int x = 5; int x = 10; // ❌ خطا: تعریف مجدد در همان محدوده
#include <stdio.h> int main() { // ایجاد و مقداردهی سه متغیر int num1 = 15; int num2 = 20; int num3 = 25; // محاسبهٔ مجموع و میانگین int sum = num1 + num2 + num3; float average = sum / 3.0; // تقسیم بر عدد اعشاری برای دقت بیشتر printf("Average: %.2f\n", average); return 0; }
#include <stdio.h> int main() { // ایجاد متغیرها برای ذخیرهٔ اطلاعات کتاب char title[50] = "The C Programming Language"; int pages = 272; float price = 45.99; char edition = '2'; // ویرایش دوم printf("Book: %s\n", title); printf("Pages: %d\n", pages); printf("Price: $%.2f\n", price); printf("Edition: %c\n", edition); return 0; }
#include <stdio.h> int main() { const int DAYS_IN_WEEK = 7; const float TAX_RATE = 0.09; float price = 100.0; float tax = price * TAX_RATE; float total = price + tax; printf("Price: $%.2f\n", price); printf("Tax: $%.2f\n", tax); printf("Total: $%.2f\n", total); printf("(Tax rate: %.2f%%)\n", TAX_RATE * 100); return 0; }
ایجاد متغیر با مشخص کردن نوع و نام انجام میشود: type name;
برای مقداردهی اولیه از عملگر انتساب استفاده میشود: type name = value;
میتوان چند متغیر از یک نوع را در یک خط ایجاد کرد: int a, b, c;
از const برای ایجاد متغیرهای غیرقابلتغییر استفاده میشود
متغیرهای محلی بهصورت خودکار مقداردهی نمیشوند و حاوی مقدار تصادفی هستند
متغیرهای سراسری بهصورت خودکار به صفر مقداردهی میشوند
همیشه متغیرها را هنگام ایجاد مقداردهی کنید تا از خطاهای پیشبینینشده جلوگیری شود
رعایت قوانین نامگذاری (شروع با حرف یا زیرخط، عدم استفاده از کلمات کلیدی) الزامی است
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات