[ad_1]
كيف يقوم عامل sizeof() بحساب حجم المصفوفة
ما حاولت:
لقد كتبت sizeof(x) لحساب حجم المصفوفة ولكني لم أحصل على الناتج المتوقع.
الحل 1
sizeof
تُرجع عدد البايتات التي تستخدمها المعلمة: بالنسبة للمصفوفة، يتم ضرب حجم كل عنصر في عدد العناصر.
جرب هذا:
ج
#include <stdio.h> int main() { int arr[10]; printf("%lu:%lu\n", sizeof(arr), sizeof(arr[0])); return 0; }
وستحصل على النتيجة “40:4”: يستخدم إجمالي المصفوفة 40 بايت من الذاكرة، ويستخدم كل عنصر من العناصر العشرة في المصفوفة 4 بايت.
الحل 2
إضافة صغيرة: التعبير الذي كتبته،
ج
sizeof( x ) / sizeof( x[0] )
يستخدم لحساب عدد العناصر في المصفوفة وهذا هو نفس ما _countof
الماكرو يفعل في VisualStudio C++.
تلخيص التعبيرات الثلاثة ونتائجها int x[8]
:
sizeof(x) size in bytes of x : 32 sizeof(x[0]) size in bytes of one item of x : 4 sizeof(x)/sizeof(x[0]) number of items in x : 8
الحل 3
من الأفضل أن تسأل نفسك لماذا تستخدم مصفوفة C بدلاً من الحاوية في C++. يمكنك استخدام التابع size() على الحاويات والحصول على الحجم المطلوب، والذي يمكنك أيضًا ضبطه في وقت التشغيل. هناك أيضًا العديد من المزايا الأخرى لاستخدام إمكانيات C++.
[ad_2]
コメント