اندازه انواع داده با sizeof
اندازه انواع داده با sizeof در زبان C
در زبان برنامهنویسی C، عملگر sizeof یکی از ابزارهای اساسی برای تعیین اندازه انواع دادهها و متغیرها در حافظه است. این عملگر در زمان کامپایل ارزیابی میشود و نتیجه آن به صورت یک مقدار صحیح بدون علامت (از نوع size_t) برمیگردد.
مهم: اندازه انواع دادهها ممکن است بر اساس معماری پردازنده و کامپایلر متفاوت باشد. برای اطلاعات دقیقتر میتوانید اینجا را بخوانید.
کاربردهای اصلی sizeof
- تعیین اندازه انواع دادههای پایه (int, char, float, ...)
- محاسبه اندازه ساختارها (struct) و اتحادها (union)
- تعیین اندازه آرایهها و اشارهگرها
- تخصیص حافظه پویا با توابعی مانند malloc
نوع داده | اندازه معمول (بایت) | محدوده مقدار |
---|---|---|
char | 1 | -128 تا 127 |
int | 4 | -2,147,483,648 تا 2,147,483,647 |
float | 4 | 3.4E-38 تا 3.4E+38 |
نکات مهم در استفاده از sizeof
- اندازه انواع دادهها به معماری سیستم (32-bit یا 64-bit) بستگی دارد
- برای اشارهگرها، اندازه همیشه ثابت است و به نوع اشارهگر بستگی ندارد
- در مورد آرایهها، sizeof اندازه کل آرایه را برمیگرداند نه تعداد عناصر
- برای ساختارها ممکن است به دلیل padding اندازه واقعی بیشتر از مجموع اعضا باشد
مثال کاربردی: برای محاسبه تعداد عناصر یک آرایه میتوانید از فرمول sizeof(arr)/sizeof(arr[0]) استفاده کنید. این روش به خصوص هنگام کار با آرایههای محلی بسیار مفید است.
تفاوت sizeof با strlen
بسیاری از برنامهنویسان تازهکار بین sizeof و strlen در کار با رشتهها اشتباه میکنند. در حالی که sizeof اندازه کل حافظه تخصیص یافته را برمیگرداند، strlen طول رشته تا کاراکتر null را محاسبه میکند.
برای مثال در مورد یک رشته مانند "Hello":
- sizeof مقدار 6 را برمیگرداند (5 کاراکتر + کاراکتر null)
- strlen مقدار 5 را برمیگرداند (فقط کاراکترهای قابل نمایش)
درک صحیح از sizeof و کاربردهای آن میتواند به شما در نوشتن کدهای بهینهتر و قابل حملتر کمک کند. برای جزئیات بیشتر درباره پیادهسازی این عملگر در پلتفرمهای مختلف، پیشنهاد میکنیم مقاله اینجا را بخوانید را مطالعه کنید.