أهلا ومرحبا بكم مرة أخرى. الآن بعد أن فهمنا المؤشرات بمزيد من التفصيل
قليلاً ، أود التحدث عن مؤشرات الشخصية ، وبشكل
أساسي كيف يمكنك استخدام مؤشرات الأحرف لتمثيل السلاسل.
السلاسل عبارة عن مصفوفات أحرف ، أحرف متعددة ، كلمات.
لذلك نحن نعرف الآن كيف ترتبط المصفوفات بالمؤشرات في مفهوم حساب المؤشر.
مفهوم مفيد جدا جدا.
يمكن أن تكون هذه المفاهيم مفيدة للغاية عند تطبيقها
على سلاسل مصفوفات الأحرف لأنه يمكننا الآن بسهولة اجتياز سلسلة أحرف بحرف.
أحد أكثر التطبيقات شيوعًا لاستخدام مؤشر إلى مصفوفة
هو كمؤشر لسلسلة أحرف.
الأسباب هي واحدة من الملاءمة والكفاءة التدوينية.
لذا فإن استخدام متغير من نوع المؤشر إلى حرف char للإشارة
إلى سلسلة يمنحك الكثير من المرونة.
لذلك ستحاول استخدام مؤشرات الأحرف
بقدر ما تستطيع فوق مصفوفات الأحرف
، وتحديدًا باستخدام مؤشرات الأحرف لتمرير البيانات إلى وظيفة.
كل أنواع الأشياء الجميلة من هذا القبيل.
لنلق نظرة على مثال يستخدم مصفوفة لنسخ سلسلة.
في هذا المثال ، ستكون معلمة المصفوفة الخاصة بنا عبارة عن مصفوفة أحرف.
سترى هذا الحق في إعلان الوظيفة.
أريد أن أقارن هذا بوظيفة تأخذ مؤشر حرف وتوضح
لك كيف أن وظيفة مؤشر الحرف أكثر فاعلية.
إذن في هذا المثال ، لدينا وظيفتان
، إحداهما تأخذ مصفوفة والأخرى
تأخذ مؤشرات.
في سلسلة نسخ الوظيفة الأولى ، يمكننا
المرور عبر المصفوفة بأكملها باستخدام حلقة for I تساوي صفرًا من الفرعية
I ونمضي على طول الطريق حتى نرى سلسلة الأحرف الفارغة ثم نزيد
متغير التحكم في الحلقة.
وبعد ذلك ، كل ما عليك فعله هو أن تقول 2 sub I يساوي من الفرعي I. نحن نقوم بمهمة مباشرة
هناك.
ثم في النهاية بعد أن قطعنا الطريق حتى نرى حرفًا فارغًا
، نضيف حرفًا فارغًا إلى نهاية المصفوفة
، أساسي جدًا. لنرى الآن كيف نفعل ذلك عندما نستخدم المؤشرات.
أولاً ، نعلن عن المؤشرات كإعلان عن الوظيفة في سلسلة
النسخ بمجرد قول char star to char يبدأ من.
في حلقة for الخاصة بنا ، لا يتعين علينا الإعلان
عن أي متغيرات لأن لدينا مؤشرات ونريد فقط تكرارها
حتى تصل قيمة from إلى النهاية الصفرية.
وبعد ذلك يمكننا زيادة كل من مؤشري from و to.
لأننا هنا نقوم بحساب النقاط.
نحن نضيف واحدًا فقط إلى المؤشر الذي يزيد عنوانه بمقدار واحد ، وهو ما نحصل
على الحرف التالي.
وسطر حلقة for التالية نقوم فقط بإلغاء الإشارة
إلى كل من "إلى" و "من" لأننا نريد تعيين القيمة
الفعلية التي يشير إليها المؤشر ، والحرف الفعلي
إلى المؤشر إلى.
ثم في النهاية ، نضيف الحرف الفارغ
إلى المكان الذي يشير إليه المؤشر إلى والذي
سيكون في نهاية آخر عنوان من السلسلة لـ from ولكن الآن
يشير إلى العنوان.
لا تبدو سيئة للغاية. أعني أن لديك حلقة for.
لديك أساسًا نفس عدد سطور التعليمات البرمجية.
لكنك ترى الاختلاف في بناء الجملة.
لا تستخدم الرموز وتستخدم المؤشرات ، استخدم علامة النجمة.
مرة أخرى ، حقًا مسألة تتعلق بالراحة التوضيحية.
لا ترى ميزة كبيرة هنا.
ولكن يمكنك في الواقع تحسين هذا بشكل أكبر للوصول
إلى رمز أقل عند استخدام المؤشرات.
لذلك إذا كان لديك مصفوفة أحرف
كمؤشر ، إذا كان لديك مصفوفة من الأحرف تسمى نص ، يمكنك بالمثل
تحديد مؤشر لها واستخدام العناصر في النص.
هنا يمكننا أن نقول مؤشر النص
char star ، هكذا تحدد مؤشر الحرف.
إذا تم تعيين مؤشر النص للإشارة إلى بداية مصفوفة الأحرف
المسماة text ، فيمكنك فقط زيادته
بواحد باستخدام عوامل التنفيذ والتناقص السابقة واللاحقة.
إذاً ما سبق ، فإن هذا المؤشر بالإضافة إلى النص سوف يقوم بتعيين مؤشر النص
الذي يشير إلى الحرف التالي في النص ، وهو النص الفرعي 1.
لذا ، إذا أردنا أن ننظر في الشعاع التالي تمامًا مثل الأعداد
الصحيحة ، فكل ما علينا فعله هو إضافة 1 2 ويمكننا الحصول على الحرف التالي.
إنه مفيد أكثر في مصفوفات الأحرف لأنه
يمكنك بسهولة التعامل مع الأحرف واحدة تلو الأخرى.
إذا قمت بعمل مؤشر نص ناقص ناقص ، وهو عامل التناقص ، فسيؤدي ذلك
إلى تعيين المؤشر إلى الحرف السابق في النص بافتراض
أن مؤشر النص لم يكن يشير إلى بداية النص.
لأنه إذا كان الأمر كذلك ، فستتوفر هذه الأخطاء ضمن الحدود.
إذا كان يتم إجراء علامة الجمع في نهاية السلسلة ، فسيكون لديك خطأ خارج الحدود.
عليك دائمًا توخي الحذر تمامًا مثل حساب الأعداد الصحيحة حتى لا تتجاوز حدود المصفوفة.
لكنها بسيطة جدًا ، فهي ترتبط ارتباطًا وثيقًا بالوقت الذي تقوم فيه
بحساب مؤشر عدد صحيح.
مؤشر الحرف الحسابي هو نفس الشيء.
إنها أكثر فائدة لأنه يمكنك الآن بالفعل إلقاء نظرة على الأحرف الفردية دون استخدام خط منخفض.
لذلك إذا نظرنا إلى هذا المثال السابق
ويمكننا بالفعل تحسينه قليلاً باستخدام المؤشرات لجعله أقل سطورًا
من التعليمات البرمجية.
الآن في سلسلة النسخ الخاصة بنا ، نقوم بتعريف الوظيفة هذا كما كان من قبل ، وننشئ
مؤشرين باستخدام العلامة النجمية.
لكننا لم نعد نستخدم حلقة for بعد الآن لأنه كان من غير المجدي
استخدام حلقة for في المثال السابق لأننا
لم نكن بحاجة فعليًا إلى تهيئة متغير التحكم في الحلقة.
كل ما احتجنا إلى فعله هو الخروج من حلقة بشرط
، ثم نستخدم بالفعل عوامل الزيادة والإنقاص في الحلقة for
، لكننا لا نحتاج حتى إلى القيام بذلك.
يصبح الأمر في الواقع أبسط بكثير هنا لأننا إذا استخدمنا حلقة while
، فكل ما علينا فعله هو إلقاء نظرة على حلقة while وستقفز
إذا كانت تشير إلى حرف فارغ لأن الحرف الفارغ يساوي صفرًا
في الواقع.
وتذكر حلقة while أن القيم المنطقية
في c يتم تمثيلها بأعداد صحيحة ، أحدها صحيح ثم الصفر
خطأ أو الصفر خاطئ حقًا ثم أي شيء آخر يكون صحيحًا.
في هذه الحالة ، الحرف الفارغ 0 وهو خطأ ، سوف يقفز للخارج.
لذلك كل ما عليك فعله لشرط الخروج في حلقة while هو وضع علامة النجمة من.
ما هو ذلك الذي يتم الاستخلاص منه لمعرفة ما هي قيمة تلك الشخصية.
لذلك عندما نصل إلى نهاية السلسلة التي نريد نسخها ، نقفز للخارج.
وبخلاف ذلك ، نضع التعديل الذي أجريناه
في المؤشرات هنا ، اثنان زائد من موجب زائد.
الآن هذا هو عامل الزيادة اللاحقة.
ما يعنيه هذا هو أن موجب زائد موجود في الطرف الأيمن من المتغير.
وعندما تفعل هذا ، فهذا يعني أنك لا تضيف
واحدًا إليها إلا بعد الانتهاء من العبارة.
إذن ما سيفعله هذا ، سيقول أن النجم 2 يبدأ من.
وبعد الانتهاء من هذه العبارة ، ستضيف 2 1 وستضيف من 1.
إذا كان لديك علامة الجمع قبل اسم المتغير ، فسيتم
إضافتها إلى هذا المتغير قبل أن ينفذ هذه العبارة وستكون هذه مشكلة
لأننا سنفتقد بشكل أساسي العنصر الأول الذي يتم نسخه في
السلسلة.
لكننا لسنا بحاجة إلى المزيد من سطور التعليمات البرمجية. نحن نجري عملية حسابية فعلية لمؤشر
الزيادة والتعيين في نفس البيان ، لذلك نقوم بتقليل
الكود بمقدار واحد.
مرة أخرى ، التدوين بسيط للغاية.
نحن نقوم بمهمة حسابية لعدد صحيح بسهولة بالغة.
ثم في النهاية ، بعد أن ننتهي من نسخ جميع السلاسل
، نضيف فقط في النهاية الحرف الفارغ
إلى المؤشر الذي نرجعه إلى الإشارة لأن الاثنين هو السبب في حقيقة
أنه يمر عبر الحلقة التي ستشير إلى الأخير حرف.
لذلك تم تنظيفها قليلاً هنا.
إنه يوضح لك قوة المؤشرات وكيف يمكنك
استخدام المؤشرات والحساب في نفس السطور ومع
عوامل الزيادة والإنقاص هذه ، زائد وناقص ، يجعله أسرع
وأسهل ، لذا فهو أكثر كفاءة أيضًا.
إذا أردنا استخدام وظائف سلسلة النسخ هذه ، فيمكننا فقط إنشاء مصفوفتين من الأحرف.
يمكننا تمرير مصفوفات الأحرف مباشرة إلى سلسلة النسخ لأن مصفوفات الأحرف
0 عبارة عن مؤشرات.
إنها مؤشرات ، لذلك لا يتعين علينا إزالة الإشارة
إليها أو إضافة عناوين أو أي شيء. يمكننا فقط أن نقول سلسلة 2 ، سلسلة 1.
ولذا فإن ما سيفعله هذا هو نسخ سلسلة ليتم
نسخها إلى مصفوفة أحرف السلسلة 2 ثم طباعتها
باستخدام printf.
كنت أرغب في الاطلاع على مثال لكيفية استخدام مؤشرات الأحرف
بدلاً من مصفوفات الأحرف ولماذا يتم تفضيلها أحيانًا.
ذكرنا أنه في بعض الأحيان يفضل المبرمج إذا كنت قد
تمت برمجتك بلغات سابقة مثل فورتران ، فقد
تكون معتادًا على الزيادة. ولكن إذا كان لديك ، فسترى
فوائد استخدام المؤشرات.
أتمنى أن يكون هذا مفيدًا. شكرًا لك.