المؤشر مقابل المصفوفة
المؤشر هو نوع بيانات يحتوي على مرجع إلى موقع الذاكرة (على سبيل المثال ، يخزن متغير المؤشر عنوان موقع الذاكرة الذي يتم فيه تخزين بعض البيانات). المصفوفات هي بنية البيانات الأكثر استخدامًا لتخزين مجموعة من العناصر. توفر معظم لغات البرمجة طرقًا لتعريف المصفوفات بسهولة وعناصر الوصول في المصفوفات.
ما هو المؤشر؟
المؤشر هو نوع بيانات يخزن عنوان موقع ذاكرة يتم فيه تخزين بعض البيانات. بمعنى آخر ، يحتوي المؤشر على إشارة إلى موقع في الذاكرة. يسمى الوصول إلى البيانات المخزنة في موقع الذاكرة الذي يشير إليه المؤشر dereferencing.عند إجراء عمليات متكررة مثل اجتياز الأشجار / السلاسل ، وعمليات البحث في الجدول ، وما إلى ذلك ، فإن استخدام المؤشرات من شأنه تحسين الأداء. وذلك لأن إلغاء الإشارة إلى المؤشرات ونسخها أرخص من النسخ الفعلي والوصول إلى البيانات التي تشير إليها المؤشرات. المؤشر الفارغ هو مؤشر لا يشير إلى أي شيء. في Java ، سيؤدي الوصول إلى مؤشر فارغ إلى إنشاء استثناء يسمى NullPointerException.
ما هي المصفوفة؟
الموضح في الشكل 1 ، هو جزء من الكود يُستخدم عادةً للإعلان عن القيم وتعيينها إلى مصفوفة. الشكل 2 يصور كيف ستبدو المصفوفة في الذاكرة.
قيم int [5] ؛ قيم [0]=100 ؛ قيم [1]=101 ؛ قيم [2]=102 ؛ قيم [3]=103 ؛ قيم [4]=104 ؛ |
الشكل 1: رمز للإعلان عن القيم وتعيينها إلى مصفوفة
100 | 101 | 102 | 103 | 104 |
الفهرس: 0 | 1 | 2 | 3 | 4 |
الشكل 2: المصفوفة المخزنة في الذاكرة
يحدد الرمز أعلاه مصفوفة يمكنها تخزين 5 أعداد صحيحة ويتم الوصول إليها باستخدام المؤشرات من 0 إلى 4. إحدى الخصائص المهمة للمصفوفة هي أنه يتم تخصيص المصفوفة بأكملها ككتلة واحدة من الذاكرة ويحصل كل عنصر عليها مساحة خاصة في المصفوفة. بمجرد تحديد المصفوفة ، يتم تحديد حجمها. لذلك إذا لم تكن متأكدًا من حجم المصفوفة في وقت الترجمة ، فسيتعين عليك تحديد مصفوفة كبيرة بما يكفي لتكون في الجانب الآمن. لكن في معظم الأوقات ، سنستخدم عددًا أقل من العناصر مما خصصناه. لذلك يتم إهدار قدر كبير من الذاكرة بالفعل.من ناحية أخرى ، إذا لم تكن "المصفوفة الكبيرة بما يكفي" في الواقع كبيرة بما يكفي ، فسوف يتعطل البرنامج.
ما الفرق بين المؤشرات والمصفوفات؟
المؤشر هو نوع بيانات يخزن عنوان موقع ذاكرة يتم تخزين بعض البيانات فيه ، بينما المصفوفات هي بنية البيانات الأكثر استخدامًا لتخزين مجموعة من العناصر. في لغة البرمجة C ، تتم فهرسة المصفوفة باستخدام حساب المؤشر (أي أن العنصر i في المصفوفة x سيكون مكافئًا لـ(x + i)). لذلك في C ، يمكن اعتبار مجموعة المؤشرات التي تشير إلى مجموعة من مواقع الذاكرة المتتالية كمصفوفة. علاوة على ذلك ، هناك اختلاف في كيفية عمل sizeof عامل التشغيل على المؤشرات والمصفوفات. عند تطبيقه على مصفوفة ، فإن sizeof عامل سيعيد الحجم الكامل للمصفوفة ، بينما عند تطبيقه على مؤشر ، فإنه سيعيد حجم المؤشر فقط.