دالة sizeof لإيجاد حجم المتغيرات في الذاكرة في لغة C - ProgrammerTech
Language:

Search

دالة sizeof لإيجاد حجم المتغيرات في الذاكرة في لغة C

  • Share this:
دالة sizeof لإيجاد حجم المتغيرات في الذاكرة في لغة C

دالة 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.


Tags:
Saja Alsadig

Saja Alsadig

من السودان مبرمجة مواقع ويب و تطبيقات أندرويد اتقن لغات "html, css, php, js" بالإضافة للتعامل مع اندرويد ستوديو و بناء التطبيقات, مهتمة بمجال التقنية منذ الصغر و كان لدي شقف كبير للدخول بالجامعه بقسم البرمجة و دخلته في عام 2013 و تعلمت كل شيئ ضمن الجامعة و خارجها من التعليم الذاتي و اتمنى أن أكون عند حسن ظن الجميع و إيصال الأمانة لكم, اعمل حاليا في إدارة موقع جامعة السودان.