المصفوفات هي واحدة من أكثر أشكال تخزين البيانات استخدامًا في سياق تشغيل البرنامج. إنها تسمح لك بتنظيم عناصر من نفس النوع في تسلسل مرتب والوصول السريع إليها عن طريق الفهرس. في كثير من الأحيان ، عند تطوير تطبيقات بلغات برمجة قوية ومرنة تسمح بالوصول المباشر للذاكرة ، مثل C ++ ، تحتاج إلى تحديد حجم المصفوفة.
ضروري
مترجم C ++
تعليمات
الخطوة 1
تحديد حجم المصفوفة في وقت الترجمة عن طريق حسابها باستخدام حجم عامل التشغيل. يقوم هذا العامل بإرجاع مقدار الذاكرة (بالبايت) التي تشغلها الوسيطة التي تم تمريرها إليها. يمكن أن تكون الوسيطة إما متغيرًا أو معرف نوع. يُرجع عامل التشغيل sizeof المقدار المحدود من الذاكرة التي يشغلها الكائن في مرحلة تنفيذ البرنامج (مع الأخذ في الاعتبار ، على سبيل المثال ، إعدادات محاذاة حقول الهيكل) ، ولكن يتم إجراء حسابه في مرحلة التجميع.
الخطوة 2
لتحديد حجم مصفوفة باستخدام حجم عامل التشغيل ، اقسم حجمها بالكامل على حجم عنصر واحد. على سبيل المثال ، إذا كان لديك التعريف التالي للمصفوفة: int aTemp = {10، 20، 0xFFFF، -1، 16} ، فيمكن حساب حجمها على النحو التالي: int nSize = sizeof (aTemp) / sizeof (aTemp [0]) ؛
الخطوه 3
لاستخدام أكثر ملاءمة لهذه الطريقة ، من المنطقي تحديد ماكرو: #define countof (a) (sizeof (a) / sizeof (a [0])) لاحظ أنه نظرًا لأنه يتم حساب قيمة sizeof عامل التشغيل عند التحويل البرمجي الوقت ، عند النقطة التي يتم فيها الحساب ، يجب أن تكون المعلومات حول حجم المصفوفة وعناصرها متاحة بشكل صريح. بمعنى آخر ، من المستحيل تحديد معلمات مصفوفة ذات حجم غير معروف من خلال إعلانها الخارجي.
الخطوة 4
تحديد حجم المصفوفة أثناء تنفيذ البرنامج ، باستخدام العلامة المعروفة لإنهائها. تتمثل إحدى الطرق التي تسمح بتخزين البيانات ونقلها في شكل مصفوفات ذات طول غير محدد في تخصيص قيمة خاصة لإشارة تشير إلى اكتمال تسلسل البيانات. على سبيل المثال ، يجب أن تنتهي سلاسل نمط C أحادية البايت التي تكون صفائف أحرف بقيمة 0 ، وتكون صفائف سلسلة C متغيرة الطول معبأة صفرية ، ويجب أن تكون صفائف المؤشر منتهية بقيمة خالية.
الخطوة الخامسة
لتحديد حجم المصفوفة الممثلة بهذه الطريقة ، امسحها عنصرًا تلو الآخر حتى تجد عنصر النهاية. قم بزيادة العداد الصفري التهيئة أثناء الفحص. أو قم بزيادة قيمة المؤشر إلى عنصر مصفوفة ، وبعد المسح ، احسب الفرق بين المؤشرات إلى العنصر الحالي والعنصر الأول.
الخطوة 6
احصل على حجم مصفوفة ديناميكية ممثلة بإطار عمل أو كائن مكتبة عن طريق استدعاء طريقتها. أي فئات تغلف وظائف هذه المصفوفات لها طرق للحصول على العدد الحالي من العناصر. على سبيل المثال ، تحتوي فئة قالب std:: vector للمكتبة القياسية C ++ على طريقة حجم ، وفئة QVector الخاصة بإطار عمل Qt بها طريقة العد ، وفئة CArray المماثلة الخاصة بـ MFC لها أسلوب GetCount.