الفرق بين المصفوفة والمؤشر

مؤلف: Laura McKinney
تاريخ الخلق: 1 أبريل 2021
تاريخ التحديث: 5 قد 2024
Anonim
[ أصول البرمجة ] 8- المؤشرات و المصفوفات ثنائية البعد ( Pointers & 2D-Arrays )
فيديو: [ أصول البرمجة ] 8- المؤشرات و المصفوفات ثنائية البعد ( Pointers & 2D-Arrays )

المحتوى


هناك علاقة وثيقة بين المصفوفة والمؤشر. يمكن استخدام المؤشر للوصول إلى عناصر الصفيف ، والوصول إلى الصفيف بأكمله باستخدام حساب المؤشر ، يجعل الوصول أسرع. يوجد اختلاف أساسي بين المؤشر والصفيف ، الصفيف هو مجموعة من المتغيرات من نوع البيانات المتشابهة ، في حين أن المؤشر هو متغير يخزن عنوان متغير آخر. هناك بعض الاختلافات الأخرى بين صفيف ومؤشر والتي تمت مناقشتها أدناه في مخطط المقارنة.

  1. رسم بياني للمقارنة
  2. تعريف
  3. الاختلافات الرئيسية
  4. خاتمة

رسم بياني للمقارنة

أساس للمقارنةمجموعة مصفوفةمؤشر
إعلان// في C ++
اكتب var_name ؛
// في جافا.
اكتب اسم فار
var_name = نوع جديد ؛
// في C ++
اكتب * var_name ؛
العمليخزن قيمة المتغير من نوع البيانات متجانسة.تخزين عنوان متغير آخر من نفس نوع البيانات مثل نوع بيانات متغيرات المؤشر.
توليديمكن إنشاء مجموعة من المؤشرات.يمكن إنشاء مؤشر إلى صفيف.
دعم جافادعم مفهوم مجموعة.لا يدعم المؤشرات.
تخزينصفيف عادي بتخزين قيم متغير و صفيف مؤشر بتخزين عنوان المتغيرات.تم تصميم المؤشرات خصيصًا لتخزين عنوان المتغيرات.
سعةيمكن للصفيف تخزين عدد العناصر ، المذكورة في حجم متغير الصفيف. يمكن لمتغير المؤشر تخزين عنوان متغير واحد فقط في كل مرة.


تعريف صفيف

الصفيف هو مجموعة من عناصر نفس نوع البيانات ، وتتم الإشارة إلى كل هذه العناصر باسم شائع ، وهو اسم متغير الصفيف. يمكن الوصول إلى عنصر صفيف معين عن طريق الوصول إلى فهرس معين من ذلك الصفيف حيث يتم تخزين هذا العنصر. يمكن أن تكون الصفائف صفيف أحادي البعد أو صفيف ثنائي الأبعاد أو صفيف متعدد الأبعاد. يمكن أيضًا إنشاء صفيف من المؤشرات ، أي صفيف يحتوي على كل المتغير كمتغير مؤشر. في "C ++" يتم تخصيص المصفوفات بشكل ثابت ، في حين يتم تخصيص المصفوفات بشكل ديناميكي في "Java".

// In C ++ type var_name؛ // في جافا. اكتب اسم فار var_name = نوع جديد ؛

هنا يشير "النوع" إلى نوع بيانات متغير الصفيف ، ويشير "var_name" إلى الاسم المعطى لمتغير الصفيف ، ويشير "الحجم" إلى سعة متغير الصفيف ، أي عدد عناصر "النوع" التي يمكن تخزينها في متغير الصفيف هذا . هناك طريقتان للوصول إلى صفيف ، أولهما "حساب المؤشر" و "فهرسة الصفيف" الثاني ، "حساب المؤشر" أسرع.

// الوصول باستخدام مؤشر الحساب Void display_array (int * S) {بينما (* s) {cout (<< "value" "<< * s)؛ * ليالي ++؛ }}

استخدام "حساب المؤشر" سيعمل بشكل أسرع بالمقارنة مع "فهرسة الصفيف" ، أي الوصول إلى متغير الصفيف باستخدام فهرسه. إذا كنت بحاجة إلى تمرير مجموعة من المؤشرات إلى دالة ، فيمكن القيام بذلك باستخدام نفس الطريقة التي تستخدمها لتمرير صفيف عادي ، أي استدعاء الوظيفة مباشرةً باسم المصفوفة ، دون أي فهرس.


دعونا نفهم ذلك مع المثال

/ / الإعلان عن مجموعة من المؤشرات. int * p؛

يظهر هنا أن "p" عبارة عن صفيف من نوع عدد صحيح ، وسوف يحتفظ بعنوان 10 متغير من نوع عدد صحيح. فلنمرر صفيف المؤشر أعلاه في عرض وظيفة ().

عرض (ع) ؛ / / استدعاء وظيفة العرض. عرض باطل (int * d) {// الدالة التي تستقبل صفيف المؤشر. لـ (int i = 0؛ i <10؛ i ++) {cout << ("index" <

تعرض هذه الوظيفة القيم ، الموجودة في المتغيرات ، التي يتم تخزين عناوينها في صفيف هذا المؤشر بالتسلسل.

تعريف المؤشر

المؤشر هو متغير يحمل عنوان ذاكرة متغير آخر. يجب أن يكون نوع البيانات في كليهما ، متغير المؤشر والمتغير الذي يتم تعيين عنوانه لمتغير المؤشر ، هو نفسه. متغير المؤشر كما هو موضح على النحو التالي.

// الإعلان في نوع C ++ * الاسم ؛

هنا ، "النوع" عبارة عن نوع بيانات ، "الاسم" هو اسم متغير المؤشر. يحدد "النوع" نوع عنوان المتغير الذي يمكن تخزينه في متغير المؤشر. على سبيل المثال ، سيخزن مؤشر عدد صحيح عنوان متغير عدد صحيح. يوجد عاملان للمؤشر "*" و "&". يُرجع عامل التشغيل "*" القيمة الموجودة على العنوان ، والتي يتم تخزينها في المتغير تليها علامة "*". يعرض عامل التشغيل "&" عنوان المتغير متبوعًا بعلامة "&".

// على سبيل المثال int b = 10 int a = & b؛ / / هنا يتم تخزين عنوان b في المتغير a. // يتيح عنوان b هو 2000 ، والآن = 2000. int c = * a؛ / / هنا ، يقوم متغير عدد صحيح * a بإرجاع القيمة الموجودة في العنوان المخزن في .ie. ج = 10.

لا يوجد سوى اثنين من العوامل الحسابية التي يمكنك استخدامها في المؤشرات ، أي الجمع والطرح. إذا قمت بتطبيق الزيادة على متغير مؤشر عدد صحيح ، فسيتم زيادتها حسب حجم نوع البيانات ، أي بمقدار 2 بايت ، حيث إنه مؤشر عدد صحيح ، عند الزيادة ، سيكون عليه أن يشير إلى متغير عدد صحيح التالي. الشيء نفسه هو الحال مع انخفاض.

// p هو مؤشر عدد صحيح containg قيمة 2000. p ++؛ // الآن ع = 2002. p--. // now p مرة أخرى تحتوي على 2000 كما تم إنقاصه بواسطة وحدتي بايت.

  1. يقوم صفيف بتخزين متغيرات أنواع البيانات المماثلة ويجب أن تتطابق أنواع بيانات المتغيرات مع نوع الصفيف. من ناحية أخرى ، يقوم متغير المؤشر بتخزين عنوان متغير من نوع مشابه لنوع نوع متغير المؤشر.
  2. يمكننا إنشاء مجموعة من المؤشرات ، أي الصفيف الذي تعد متغيرات المؤشر هي متغيراته. من ناحية أخرى ، يمكننا إنشاء مؤشر يشير إلى صفيف.
  3. تدعم Java الصفيف ، لكنها لا تدعم المؤشرات.
  4. يحدد حجم الصفيف عدد المتغيرات التي يمكنه تخزينها ؛ يمكن لمتغير المؤشر تخزين عنوان المتغير فقط

ملحوظة:

لا تدعم Java المؤشرات ولا تتجنبها بصرامة.

خاتمة:

عندما نحتاج إلى العمل على عناصر البيانات من نوع البيانات المتشابهة ، بدلاً من العمل بشكل منفصل على المتغيرات ، يمكننا إنشاء مجموعة من تلك المتغيرات من أنواع البيانات المتشابهة ثم العمل عليها. تعد المؤشرات ضرورية لبعض البرامج ، فهي توفر قوة هائلة ، لكن لسوء الحظ ، إذا كان المؤشر يحتوي على قيمة غير صحيحة ، فسيكون من أصعب الأخطاء العثور عليه.