كيفية استخدام المصفوفات في C++ بشكل صحيح: من المصفوفات الثابتة إلى الديناميكية و std::array
مرحباً بالجميع! لقد بدأت للتو في تعلم C++ بعد Python، ولدي فوضى كاملة في رأسي بخصوص المصفوفات. في Python كنت أكتب `arr = [1, 2, 3]` وكان كل شيء يعمل. أما هنا...\n\nأحاول عمل برنامج بسيط يخزن 5 أرقام ويطبع مجموعهم. كتبت هكذا:\n\n```cpp\nint arr[5];\narr = {1, 2, 3, 4, 5};\n```\n\nلكن المترجم يشتكي: "array type 'int[5]' is not assignable". حسناً، جربت التهيئة مباشرة:\n\n```cpp\nint arr[5] = {1, 2, 3, 4, 5};\n```\n\nهذا عمل. لكن بعد ذلك احتجت لتمرير هذه المصفوفة إلى دالة. كتبت:\n\n```cpp\nvoid printSum(int arr[]) {\n int sum = 0;\n for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {\n sum += arr[i];\n }\n cout << sum;\n}\n```\n\nوهنا الغرابة — `sizeof(arr)` يرجع 8 (حجم المؤشر)