Added an understanding of arrays in memory. (#26148)
In the paragraph I've written, I briefly explained how the compiler handles the multi-dimensional array memory allocation, like how it actually isn't stored as a multi-dimensional block, but rather a long one-dimensional line.
This commit is contained in:
committed by
Randell Dawson
parent
e1371f7656
commit
af889a301b
@ -96,6 +96,9 @@ datatype name[size1][size2]...[sizeN]
|
||||
int arr[2][5] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||||
```
|
||||
|
||||
قد يتصور البعض ‘ ولكن كيف تخزن المصفوفات متعددة الأبعاد في الذاكرة ؟ جواب ذلك بسيط ‘ جميعنا نعلم ان الذاكرة هي في الحقيقة عبارة عن مجموعة كبيرة جداً من المربعات (الاماكن التخزينية) المصفوفة على شكل خط (احادي الابعاد) طويل و يتم تخزين المصفوفات متعددة الأبعاد .عن طريق ضرب الابعاد و حجز مساحة كافية تساوي ناتج الضرب لتخزين البيانات
|
||||
|
||||
|
||||
قد يكون من الصعب تصور صفيف ثنائي الأبعاد باستخدام البنية الموضحة أعلاه حتى يستخدم المطورون أقواسًا اختيارية متداخلة لتوضيح بنية الصفيف. هذه أيضًا طريقة صالحة لتهيئة مصفوفة ثنائية الأبعاد.
|
||||
|
||||
```C
|
||||
@ -193,4 +196,4 @@ int b = test[89];
|
||||
|
||||
السبب في أن C لا يتحقق من تقييد الفهرسة بسيط: C هي لغة فعالة. تم إعداده ، بحيث يكون البرنامج الأسرع: يتواصل بشكل جيد مع الأجهزة الخ. لا يحتوي كود C المكتوب بشكل جيد على أخطاء في الفهرسة ، فلماذا تريد C أن تتحقق أثناء التشغيل؟
|
||||
|
||||
* عند محاولة الوصول إلى العنصر الأخير من الصفيف. لنفترض أن طول الصفيف A يكون 4 وعند الوصول إلى العنصر الأخير كـ سيعرض A \[4\] خطأ ، نظرًا لأن الفهرسة تبدأ من 0.
|
||||
* عند محاولة الوصول إلى العنصر الأخير من الصفيف. لنفترض أن طول الصفيف A يكون 4 وعند الوصول إلى العنصر الأخير كـ سيعرض A \[4\] خطأ ، نظرًا لأن الفهرسة تبدأ من 0.
|
||||
|
Reference in New Issue
Block a user