العلاقة بين طائفة والمؤشر

  • Thread starter Santoshalagawadi
  • Start date
S

Santoshalagawadi

Guest
للموضوع أعلاه أي صلات الرجاء freinds

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

أن يستعرض ، في الفصل 2 ذكرنا أن تعطى صفيف الأعداد الصحيحة يمكننا نقطة مؤشر صحيحا في ذلك مصفوفة باستعمال :

كثافة العمليات * ptr ؛
ptr = & my_array [0] ؛ / * لدينا نقطة في المؤشر الأول
صحيح لدينا في مصفوفة * /

كما ذكرنا هناك نوع من متغير مؤشر يجب أن تطابق نوع العنصر الأول من الصفيف.

بالإضافة إلى ذلك ، يمكننا استخدام مؤشر كمعلمة رسمية من وظيفة والتي تهدف الى التلاعب صفيف.على سبيل المثال

ونظرا ل :

مجموعة كثافة العمليات [3] = (1 ، 5 ، 7) ؛
a_func باطلة (كثافة العمليات * ع) ؛

قد يفضل بعض المبرمجين لكتابة النموذج الأولي الدالة على النحو التالي :

باطل a_func (ع كثافة العمليات []) ؛

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

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

typedef غير الموقعة تشار بايت ؛

أسباب اسم بايت يعني نوع الحرف غير الموقعة.من ثم

البايت ب [10] ؛ سيكون صفيف أحرف غير الموقعة.

علما بأن في الإعلان typedef ، البايت كلمة حلت محل تلك التي تكون عادة اسم دينا الحرف غير الموقعة.وهذا هو ، على سيادة لاستخدام typedef هو الاسم الجديد لنوع البيانات هو الاسم الذي يستخدم في تحديد نوع البيانات.وبالتالي في :

typedef صفيف كثافة العمليات [10] ؛

مجموعة يصبح نوع من البيانات لمجموعة من 10 أعداد صحيحة.أي صفيف my_arr ؛ تعلن my_arr كصفيف من 10 صحيحة وصفيف arr2d [5] ؛ يجعل arr2d صفيف صفائف 5 من كل 10 صحيحة.

نلاحظ أيضا أن صفيف * P1D ؛ يجعل P1D مؤشر إلى مجموعة من 10 أعداد صحيحة.* لأن نقاط P1D لنفس النوع arr2d ، وإسناد عنوان اثنين الصفيف الأبعاد arr2d لP1D ، في مؤشر إلى مجموعة واحدة من 10 الأبعاد صحيحة مقبولة.أي P1D = & arr2d [0] ؛ أو P1D = arr2d ؛ وكلاهما صحيح.

منذ نوع البيانات التي نستخدمها لدينا مؤشر هو مجموعة من 10 صحيحة فإننا نتوقع أن تزايد P1D بحلول 1 من شأنه أن يغير قيمته بنسبة 10 * sizeof (كثافة العمليات) ، وهو ما يحدث بالفعل.وهذا هو ، sizeof (* P1D) هو 20.أنت تستطيع أن تثبت هذا لنفسك عن طريق الكتابة وتشغيل برنامج بسيط قصيرة.

الآن ، في حين تستخدم typedef يجعل الامور اكثر وضوحا ليسهل على القارئ ومبرمج ، فإنه ليس من الضروري حقا.ما نحتاج اليه هو وسيلة لاعلان مثل مؤشر P1D دون الحاجة للكلمة typedef.فقد تبين أن هذا يمكن القيام به
، وأنه

كثافة العمليات (* P1D) [10] ؛

الإعلان هو الصحيح ، أي P1D هنا هو مؤشر إلى مجموعة من 10 صحيحة تماما كما كانت الحال في ظل اعلان باستخدام نوع صفيف.نلاحظ أن هذا يختلف عن

* كثافة العمليات P1D [10] ؛

الأمر الذي سيجعل P1D اسم لمجموعة من 10 مؤشرات إلى نوع كثافة العمليات.

 
Santoshalagawadi كتب :

للموضوع أعلاه أي صلات الرجاء freinds
 

Welcome to EDABoard.com

Sponsor

Back
Top