متغیرها (C Variables)
متغیرها در C: ظرفهایی برایِ دادههایِ شما 🧱📦
متغیرها نامهایی هستند که ما به خانههایی از حافظه اختصاص میدهیم تا دادهها را در آنها ذخیره و بعداً بازخوانی کنیم. در C، شما باید قبل از استفاده از هر متغیر، نوعِ آن را مشخص کنید.
ساختارِ تعریفِ متغیر
تعریفِ یک متغیر شامل نوع (Type) و نام (Name) است:
{code_block('int age = 25;\nchar grade = "A";\nfloat price = 19.99;')}قوانینِ نامگذاری (Identifier Rules):
- نام میتواند شاملِ حروف، اعداد و خطِ تیره (Underscore) باشد.
- باید حتماً با یک حرف یا
_شروع شود. - نامها به حروفِ بزرگ و کوچک حساس هستند (Case-sensitive).
- از کلماتِ رزرو شده (مثل
intیاreturn) نمیتوانید استفاده کنید.
تعریفِ چند متغیر در یک خط:
{code_block('int x = 5, y = 10, z = 50;')}بخش تخصصی: مهندسیِ متغیرها و مدیریتِ حافظه 🧱⚙️⚡
در زبانِ C، متغیرها فقط نامهایی برایِ سادهسازی نیستند؛ آنها نمایندهیِ آدرسهایی در حافظهیِ فیزیکی (RAM) هستند. درکِ نحوهیِ ذخیرهسازیِ دادهها، مرز بینِ یک کدنویسِ معمولی و یک توسعهدهنده سیستم است.
۱. ترتیبِ بایتها (Endianness)
وقتی یک عددِ ۴ بایتی (مثل int) در حافظه ذخیره میشود، بایتها به چه ترتیبی قرار میگیرند؟
- Little-Endian: بایتِ کمارزش در آدرسِ کمتر ذخیره میشود (رایج در پردازندههای x86 و ARM).
- Big-Endian: بایتِ پُرارزش در آدرسِ کمتر ذخیره میشود (رایج در شبکهها و برخی پردازندههای قدیمی).
۲. نمایشِ اعدادِ اعشاری (IEEE 754)
اعدادِ اعشاری در C (مثل float و double) بر اساسِ استانداردِ IEEE 754 ذخیره میشوند. این استاندارد عدد را به سه بخش تقسیم میکند:
- Sign (علامت): ۱ بیت برای مثبت یا منفی بودن.
- Exponent (توان): برای مشخص کردنِ بزرگیِ عدد.
- Mantissa (مانتیس): برای مشخص کردنِ دقتِ عدد.
۳. کلاسهایِ ذخیرهسازی (Storage Classes)
هر متغیر در C علاوه بر "نوع"، یک "کلاسِ ذخیرهسازی" هم دارد که طولِ عمر و حوزهیِ دسترسیِ آن را مشخص میکند:
auto: پیشفرض برای متغیرهای محلی.statice: مقدارِ خود را بینِ فراخوانیهایِ تابع حفظ میکند.extern: برای دسترسی به متغیری که در فایلِ دیگری تعریف شده است.register: به کامپایلر پیشنهاد میدهد متغیر را در ثباتهایِ CPU نگه دارد (برایِ سرعتِ فوقالعاده).
sizeof() برای پیدا کردنِ اندازهیِ واقعیِ یک متغیر در سیستمِ خود استفاده کنید. اندازهیِ int در یک سیستمِ ۱۶ بیتی با یک سیستمِ ۶۴ بیتی میتواند متفاوت باشد!
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر به نام myNumber از نوع عدد صحیح (integer) تعریف کرده و مقدار 100 را به آن اختصاص دهید. سپس آن را با استفاده از printf چاپ کنید.
#include <stdio.h>
int main() {
int myNumber = 100;
printf("%d", myNumber);
return 0;
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.