دوره‌ها / آموزش برنامه‌نویسی C / متغیرها (C Variables)

متغیرها (C Variables)

20 دقیقه Article

متغیرها در C: ظرف‌هایی برایِ داده‌هایِ شما 🧱📦

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

ساختارِ تعریفِ متغیر

تعریفِ یک متغیر شامل نوع (Type) و نام (Name) است:

{code_block('int age = 25;\nchar grade = "A";\nfloat price = 19.99;')}

قوانینِ نام‌گذاری (Identifier Rules):

  • نام می‌تواند شاملِ حروف، اعداد و خطِ تیره (Underscore) باشد.
  • باید حتماً با یک حرف یا _ شروع شود.
  • نام‌ها به حروفِ بزرگ و کوچک حساس هستند (Case-sensitive).
  • از کلماتِ رزرو شده (مثل int یا return) نمی‌توانید استفاده کنید.
مقداردهی اولیه (Initialization): همیشه سعی کنید به متغیرهایِ خود مقدارِ اولیه بدهید. متغیرهایِ بدونِ مقدار در C حاویِ داده‌هایِ تصادفیِ باقی‌مانده در حافظه (Garbage Values) هستند که می‌تواند باعثِ خطاهایِ عجیب شود.

تعریفِ چند متغیر در یک خط:

{code_block('int x = 5, y = 10, z = 50;')}
تغییرِ مقدار: وقتی مقدارِ جدیدی را در یک متغیر می‌ریزید، مقدارِ قبلی برایِ همیشه پاک می‌شود.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسیِ متغیرها و مدیریتِ حافظه 🧱⚙️⚡

در زبانِ C، متغیرها فقط نام‌هایی برایِ ساده‌سازی نیستند؛ آن‌ها نماینده‌یِ آدرس‌هایی در حافظه‌یِ فیزیکی (RAM) هستند. درکِ نحوه‌یِ ذخیره‌سازیِ داده‌ها، مرز بینِ یک کدنویسِ معمولی و یک توسعه‌دهنده سیستم است.

۱. ترتیبِ بایت‌ها (Endianness)

وقتی یک عددِ ۴ بایتی (مثل int) در حافظه ذخیره می‌شود، بایت‌ها به چه ترتیبی قرار می‌گیرند؟

  • Little-Endian: بایتِ کم‌ارزش در آدرسِ کمتر ذخیره می‌شود (رایج در پردازنده‌های x86 و ARM).
  • Big-Endian: بایتِ پُرارزش در آدرسِ کمتر ذخیره می‌شود (رایج در شبکه‌ها و برخی پردازنده‌های قدیمی).

۲. نمایشِ اعدادِ اعشاری (IEEE 754)

اعدادِ اعشاری در C (مثل float و double) بر اساسِ استانداردِ IEEE 754 ذخیره می‌شوند. این استاندارد عدد را به سه بخش تقسیم می‌کند:

  1. Sign (علامت): ۱ بیت برای مثبت یا منفی بودن.
  2. Exponent (توان): برای مشخص کردنِ بزرگیِ عدد.
  3. Mantissa (مانتیس): برای مشخص کردنِ دقتِ عدد.

۳. کلاس‌هایِ ذخیره‌سازی (Storage Classes)

هر متغیر در C علاوه بر "نوع"، یک "کلاسِ ذخیره‌سازی" هم دارد که طولِ عمر و حوزه‌یِ دسترسیِ آن را مشخص می‌کند:

  • auto: پیش‌فرض برای متغیرهای محلی.
  • statice: مقدارِ خود را بینِ فراخوانی‌هایِ تابع حفظ می‌کند.
  • extern: برای دسترسی به متغیری که در فایلِ دیگری تعریف شده است.
  • register: به کامپایلر پیشنهاد می‌دهد متغیر را در ثبات‌هایِ CPU نگه دارد (برایِ سرعتِ فوق‌العاده).
نکته مهندسی: همیشه از sizeof() برای پیدا کردنِ اندازه‌یِ واقعیِ یک متغیر در سیستمِ خود استفاده کنید. اندازه‌یِ int در یک سیستمِ ۱۶ بیتی با یک سیستمِ ۶۴ بیتی می‌تواند متفاوت باشد!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تعریف متغیر عدد صحیح Easy
سوال تمرین

یک متغیر به نام myNumber از نوع عدد صحیح (integer) تعریف کرده و مقدار 100 را به آن اختصاص دهید. سپس آن را با استفاده از printf چاپ کنید.

پاسخ تمرین
C
#include <stdio.h>

int main() {
  int myNumber = 100;
  printf("%d", myNumber);
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.