الفرق بين المراجعتين لصفحة: «Arduino/sizeof»
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 35: | سطر 35: | ||
== ملاحظات وتحذيرات == | == ملاحظات وتحذيرات == | ||
انتبه إلى أنَّ الدالة <code>sizeof()</code> تعيد عدد البايتات الكلي؛ وبالتالي، إن كان حجم المتغيرات المخزَّنة في مصفوفة أكبر من بايتٍ واحدٍ، فيجب أن تبدو حلقة التكرار بشكل مشابه للمثال التالي:<syntaxhighlight> | انتبه إلى أنَّ الدالة <code>sizeof()</code> تعيد عدد البايتات الكلي؛ وبالتالي، إن كان حجم المتغيرات المخزَّنة في مصفوفة أكبر من بايتٍ واحدٍ، فيجب أن تبدو حلقة التكرار بشكل مشابه للمثال التالي:<syntaxhighlight lang="arduino"> | ||
for (i = 0; i < (sizeof(myInts)/sizeof(int)); i++) { | for (i = 0; i < (sizeof(myInts)/sizeof(int)); i++) { | ||
// myInts[i] افعل شيئًا مع عناصر المصفوفة | // myInts[i] افعل شيئًا مع عناصر المصفوفة | ||
سطر 47: | سطر 47: | ||
* [https://www.arduino.cc/reference/en/language/variables/utilities/sizeof/ صفحة الدالة sizeof() في توثيق أردوينو الرسمي.] | * [https://www.arduino.cc/reference/en/language/variables/utilities/sizeof/ صفحة الدالة sizeof() في توثيق أردوينو الرسمي.] | ||
[[تصنيف: Arduino]] | [[تصنيف: Arduino]] | ||
[[تصنيف: Arduino | [[تصنيف: Arduino Constants & Variables]] |
المراجعة الحالية بتاريخ 07:13، 7 نوفمبر 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 حيث يجب أن تخزَّن بالحالة الطبيعية.