"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الإدخال: كيف يمكنني تحديد حجم صفيف C ++ الذي تم تمريره كمؤشر إلى وظيفة؟ الإخراج: كيفية تحديد حجم معلمة مؤشر صفيف C ++؟

الإدخال: كيف يمكنني تحديد حجم صفيف C ++ الذي تم تمريره كمؤشر إلى وظيفة؟ الإخراج: كيفية تحديد حجم معلمة مؤشر صفيف C ++؟

نشر في 2025-04-21
تصفح:729

How Can I Determine the Size of a C   Array Passed as a Pointer to a Function?

تحديد حجم صفيف من مؤشر في C

عند العمل مع المصفوفات في C ، قد يكون من الضروري تحديد حجمها. ومع ذلك ، عند تمرير صفيف كوسيطة دالة ، فإنه يتحلل إلى مؤشر ، لا يترك أي معلومات عن الحجم الصريح.

نهج غير صحيح

الحجم.
  • list.size (): لا يمكن استخدام هذه الطريقة لأنها ليست وظيفة عضو في نوع صفيف int. أكبر (قائمة *، int أعلى _index) { // ... }
  • لاستخدام هذه الوظيفة ، مرر الصفيف وحجمها كوسائط: int array [] = {1 ، 2 ، 3 ، 4 ، 5} ؛ حجم int = sizeof (صفيف) / sizeof (int) ؛ // حساب حجم الصفيف int max = الأكبر (صفيف ، حجم) ؛
صفيف/معادلة مؤشر

c يرث معادلة الصفيف/المؤشر من C ، والتي تسمح للصفائف للمشاركة للمؤشرات عند تمريرها إلى الوظائف. يعني هذا السلوك أن المؤشر لا يحتوي على معلومات الحجم. عند الإعلان عن صفيف ، يتم تخصيص ذاكرة متجاورة لتخزين عناصرها. ينطوي المؤشر على العنصر الأول على بداية الصفيف ، لكنه لا يحمل معلومات حول حجمه.

الاستنتاج
int largest(int *list, int highest_index)
{
  // ...
}
لتحديد حجم صفيف من مؤشر في C ، من الضروري تمرير الحجم كوسيطة إضافية للدالة التي تعالج الصفيف. يضمن هذا النهج أن تكون الوظيفة لديها إمكانية الوصول إلى المعلومات المطلوبة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3