تم تمرير حلقة for المستندة إلى النطاق إلى وظيفة غير رئيسية
في لغة C، يمكن إنشاء حلقة for مبنية على النطاق تستخدم للتكرار على صفيف. ومع ذلك، عندما يتم تمرير مصفوفة إلى دالة غير رئيسية، فإنها تتحلل إلى مؤشر، وتفقد معلومات حجمها.
لحل هذه المشكلة وتمكين استخدام حلقة for-based، المصفوفة يجب الإشارة إليه بدلاً من تمريره كمؤشر. يؤدي هذا إلى الاحتفاظ بمعلومات حجم المصفوفة. فيما يلي الأمثلة المعدلة التي توضح النهج الصحيح:
void foo(int (&bar)[3]);
int main() {
int bar[3] = {1,2,3};
for (int i : bar) {
cout << i << endl;
}
foo(bar);
}
void foo(int (&bar)[3]) {
for (int i : bar) {
cout << i << endl;
}
}
// Generic implementation
template <std::size_t array_size>
void foo(int (&bar)[array_size]) {
for (int i : bar) {
cout << i << endl;
}
}
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3