
دالة sizeof لإيجاد حجم المتغيرات في الذاكرة في لغة سي
دالة ( 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.