الدالة sizeof()‎ في أردوينو

من موسوعة حسوب
مراجعة 11:44، 27 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعيد الدالة sizeof()‎ الحجم المحجوز من الذاكرة بالبايت لمتغير أو مصفوفة معيَّنة.

البنية العامة

sizeof(variable)

المعاملات

variable

متغير من أي نوع من البيانات يراد معرفة حجمه، أو المصفوفة المراد معرفة حجمها الحالي.

القيم المعادة

تعاد عدد البايتات التي يحجزها المتغير أو المصفوفة variable.

أمثلة

الدالة sizeof()‎ مفيدةٌ جدًا في التعامل مع المصفوفات (مثل مصفوفات السلاسل النصية) المعرَّضة لتغيُّرٍ في الحجم دون التأثير على أجزاء أخرى من البرنامج. يطبع المثال التالي كل محرف من محارف سلسلة نصية على حدة. جرب تنفيذ هذا المثال مع تغيير السلسلة النصية myStr وانظر إلى الناتج الذي ستحصل عليه:

char myStr[] = "this is a test";
int i;

void setup(){
  Serial.begin(9600);
}

void loop() {
  for (i = 0; i < sizeof(myStr) - 1; i++){
    Serial.print(i, DEC);
    Serial.print(" = ");
    Serial.write(myStr[i]);
    Serial.println();
  }
  delay(5000); // انتظر قليلًا قبل إعادة تكرار العملية

ملاحظات وتحذيرات

انتبه إلى أنَّ الدالة sizeof()‎ تعيد عدد البايتات الكلي؛ وبالتالي، إن كان حجم المتغيرات المخزَّنة في مصفوفة أكبر من بايتٍ واحدٍ، فيجب أن تبدو حلقة التكرار بشكل مشابه للمثال التالي:

for (i = 0; i < (sizeof(myInts)/sizeof(int)); i++) {
  // myInts[i] افعل شيئًا مع عناصر المصفوفة
}

انتبه أيضًا أنَّ السلسلة النصية ذات التنسيق المثالي تنتهي بالمحرف null (المحرف ASCII 0).

انظر أيضًا

  • الكلمة المفتاحية PROGMEM: تخبر المصرَّف بأنَّ يضع بيانات المتغير التي استعملت معه في الذاكرة flash بدلًا من وضعها في الذاكرة SRAM حيث يجب أن تخزَّن بالحالة الطبيعية.

مصادر