كيفية العثور على طول مصفوفة في C++؟ مشكلة مع sizeof والمؤشرات
مرحبًا بالجميع! أنا مطور C++ مبتدئ واجهت مشكلة غريبة جدًا. أحتاج إلى معرفة عدد العناصر في المصفوفة، لكن محاولاتي تفشل.
أكتب هكذا:
```cpp
int arr[] = {10, 20, 30, 40, 50};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "طول المصفوفة: " << size; // يطبع 5 — كل شيء صحيح
```
لكن عندما أحاول فعل الشيء نفسه داخل دالة، مررًا المصفوفة كمعامل، أحصل على هراء:
```cpp
void printArrayLength(int arr[]) {
int size = sizeof(arr) / sizeof(arr[0]);
cout << "طول المصفوفة: " << size; // يطبع 1 أو 2، وليس 5!
}
int main() {
int myArray[] = {10, 20, 30, 40, 50};
printArrayLength(myArray);
return 0;
}
```
لماذا يحدث هذا؟ sizeof(arr) داخل الدالة لا يعطي حجم المصفوفة بأكملها، بل شيئًا آخر. قرأت عن المؤشرات، لكنني لا أفهم تمامًا كيف يرتبط هذا.
هل هناك طريقة موثوقة لمعرفة طول المصفوفة في C++ تعمل في كل مكان؟ أم أنني بحاجة دائمًا لتمرير الحجم؟