دالة sizeof في لغة C
دالة ( sizeof() ) هي دالة تُستخدَم لإيجاد حجم المُتغيرات في الذاكرة بالبايت لمتغير أو مصفوفة و يمكن تطبيقها على أي نوع من انواع البيانات بما في ذلك الأعداد الصحيحة ....الخ. تحدثنا سابقاً عن انواع البيانات التي تعلمناها سابقاً و هي int, double, float, char, سوف نتعرف في هذا الدرس عن ما هو الحجم الذي يختلف به كل نوع بيانات.
إستخدام sizeof مع نوع بيانات int
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int x = 23;
printf("size of x = %d\n", sizeof(x));
return 0;
}
قُمنا بإنشاء متغير نوع int و هو x و قيمته هي 23 ثم قُمنا في طباعة كلمة size of x تساوي. ثم وضعنا الدالة sizeof() لتعريف المحرر أننا نريد حجم المُتغير x ثم شغلنا الكود و حصلنا على النتيجة الآتية و حجمه هو 4 بايت.
size of x = 4
إستخدام sizeof مع نوع بيانات double
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
double cs = 2.3;
printf("size of cs = %d\n", sizeof(cs));
return 0;
}
قُمنا بإنشاء متغير نوع double و هو cs و قيمته هي 2.3 ثم قُمنا بطباعة كلمة size of cs تساوي. ثم وضعنا الدالة sizeof() لتعريف المحرر أننا نريد حجم المُتغير cs. ثم شغلنا الكود و حصلنا على النتيجة الآتية و حجمه هو 8 بايت.
size of cs = 8
إستخدام sizeof مع نوع بيانات float
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
float s = 3.2;
printf("size of s = %d\n", sizeof(s));
return 0;
}
قُمنا بإنشاء متغير نوع float و هو s و قيمته هي 3.2 ثم قُمنا بطباعة كلمة size of s تساوي. ثم وضعنا الدالة sizeof() لتعريف المحرر أننا نريد حجم المُتغير s. ثم شغلنا الكود و حصلنا على النتيجة الآتية و حجمه هو 4 بايت.
size of s = 4
إستخدام sizeof مع نوع بيانات char
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
char c = 's';
printf("size of c = %d\n", sizeof(c));
return 0;
}
قُمنا بإنشاء متغير نوع char و هو c و قيمته هي s لأن هذا النوع يقبل حرف واحد فقط. ثم قُمنا بطباعة كلمة size of c تساوي ثم وضعنا الدالة sizeof لتعريف المحرر أننا نريد حجم المُتغير c. ثم شغلنا الكود و حصلنا على النتيجة الآتية و حجمه هو 1 بايت.
size of c = 1
إستخدام sizeof مع المصفوفات array
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int array[3] = {1, 2, 3};
printf("size of array = %d\n", sizeof(array));
return 0;
}
قُمنا بإنشاء مصفوفة نوع int و هي array و حجمها هو 3 و قيمها هي 1, 2, 3 ثم قُمنا بطباعة كلمة size of array تساوي. ثم وضعنا الدالة sizeof لتعريف المحرر أننا نريد حجم المصفوفة array ثم شغلنا الكود و حصلنا على النتيجة الآتية و حجمها هو 12 بايت.
size of array = 12
مثال يجمع جميع أنواع البيانات عبر دالة sizeof
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int x = 23;
double cs = 2.3;
float s = 3.2;
char c = 's';
int array[3] = {1, 2, 3};
printf("size of x = %d\n", sizeof(x));
printf("size of cs = %d\n", sizeof(cs));
printf("size of s = %d\n", sizeof(s));
printf("size of c = %d\n", sizeof(c));
printf("size of array = %d\n", sizeof(array));
return 0;
}
لقد شرحنا كل هذا في الأمثلة و جمعناها لكم في كود واحد و عند تشغيل هذا الكود ستكون النتيجة هي
size of x = 4
size of cs = 8
size of s = 4
size of c = 1
size of array = 12
نُلاحظ من خلال نافذة الإخراج output السابقة أن حجم المتغير الذي نوعه int هو 4 بايت في الذاكرة أي يقوم بحجز 4 بايت. و المتغير من نوع float يقوم أيضاً بحجز 4 بايت في الذاكرة. أما المُتغير من نوع double يقوم بحجز 8 بايت من الذاكر أي انه ضعف الـ float لأنه دبل. أما المتغير الحرفي يتسع لحرف واحد فقط لهذا تم حجز فقط 1 بايت في الذاكرة. و في النهاية وضعنا مصفوفة عددية بها ثلاث قيم و عند الطباعة أعطانا أنها تقوم بحجز 12 بايت من الذاكرة. أي لأن نوعها int و النوع int يقوم بحجز 4 بايت من الذاكرة و بها ثلاث قيم من نوع int أي 4+4+4 يساوي 12.