recent
أخبار ساخنة

إيجاد حجم المتغيرات في الذاكرة عبر دالة sizeof في لغة السي C الدرس|21|

الصفحة الرئيسية


دالة sizeof في لغة C

هي دالة تُستخدَم لإيجاد حجم المُتغيرات في الذاكرة بالبايت لمتغير أو مصفوفة و يمكن تطبيقها على أي نوع من انواع البيانات بما في ذلك الأعداد الصحيحة ....الخ.

تحدثنا سابقاً عن انواع البيانات التي تعلمناها سابقاً و هي int, double, float, char, سوف نتعرف في هذا الدرس عن ما هو الحجم الذي يختلف به كل نوع بيانات.

إذا كان نوع البيانات 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 بايت.

إذا كان نوع البيانات 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 بايت.


إذا كان نوع البيانات 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 بايت.


إذا كان نوع البيانات 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 بايت.


إذا كان مصفوفة 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 بايت.


جميع انواع البيانات السابقة في كود

#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;
}

 

لقد شرحنا كل هذا في الأمثلة و جمعناها لكم في كود واحد و عند تشغيل هذا الكود ستكون النتيجة هي


نُلاحظ من خلال نافذة الإخراج output السابقة أن حجم المتغير الذي نوعه int هو 4 بايت في الذاكرة أي يقوم بحجز 4 بايت, و المتغير من نوع float يقوم أيضاً بحجز 4 بايت في الذاكرة, أما المُتغير من نوع double يقوم بحجز 8 بايت من الذاكر أي انه ضعف الـ float لأنه دبل, أما المتغير الحرفي يتسع لحرف واحد فقط لهذا تم حجز فقط 1 بايت في الذاكرة, و في النهاية وضعنا مصفوفة عددية بها ثلاث قيم و عند الطباعة أعطانا أنها تقوم بحجز 12 بايت من الذاكرة أي لان نوعها int و النوع int يقوم بحجز 4 بايت من الذاكرة و بها ثلاث قيم من نوع int أي 4+4+4 يساوي 12.

إضغط هنا للرجوع للدرس السابق

google-playkhamsatmostaqltradent