مؤشر C++ الحسابي

Mwshr C Alhsaby



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

السيناريو 1: يقوم المؤشر بإجراء عمليات الزيادة والتقليل

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







#تشمل
استخدام اسم للمحطة؛
const int Arr_Max = 5 ;
انت مين ( ) {
إنت  أين [ Arr_Max ] = { عشرين , 150 , 270 } ;
كثافة العمليات * بتر. // يعلن المؤشر
ptr = var;
ل ( إنت ط = 0 ; أنا < Arr_Max; أنا++ ) {
الأمراض المنقولة جنسيا::كوت << 'عنوان الذاكرة للعنصر هو: [' << أنا << '] = ' ;
الأمراض المنقولة جنسيا::كوت << بتر << نهاية؛
cout << 'القيمة مقابل العنوان هي [' << أنا << '] = ' ;
cout << * بتر << نهاية؛
الأمراض المنقولة جنسيا::كوت << 'تم زيادة المؤشر بنجاح' << نهاية؛
بتر++;
}
الأمراض المنقولة جنسيا::كوت << 'عنوان المؤشر قبل التخفيض' << بتر << نهاية؛
بتر--;
الأمراض المنقولة جنسيا::كوت << 'عنوان المؤشر بعد التخفيض' << بتر << نهاية؛
يعود 0 ;
}


هنا، نحدد المكتبة المطلوبة في الكود في البداية: ' '. نحدد تخصيص الذاكرة لحجز المساحة في الذاكرة وهي 'Arr_Max=5'. في الوظيفة الرئيسية، نقوم بتهيئة المصفوفة وتمرير حجم الذاكرة إلى تلك المصفوفة. بعد ذلك، هناك حاجة أيضًا إلى إعلان المؤشر 'ptr' للإشارة إلى عنوان الذاكرة في الذاكرة.



نقوم بتمرير المصفوفة إلى المؤشر للوصول إلى العنوان. كما نعلم جميعًا، تحتوي المصفوفات دائمًا على عناصر متعددة في مواقع مختلفة. لذلك، كنا بحاجة إلى حلقة تحتوي على مؤشر 'المساعدة' للوصول إلى كل عنصر في المصفوفة. في كل مرة يتم تنفيذ الحلقة، نحصل على عنوان الذاكرة والقيم مقابل هذا العنوان بمساعدة عامل الزيادة الحسابي للمؤشر 'ptr++' الذي ينقل عنوان الذاكرة إلى العنوان التالي للذاكرة. تعتمد دورة تنفيذ الحلقة على حجم المصفوفة. خارج الحلقة، نريد إعادة المؤشر إلى عنوان الذاكرة السابق باستخدام مؤشر التناقص 'ptr- -'.



قم بتنفيذ هذا الكود بالنقر فوق خيار تنفيذ>ترجمة وتشغيل وستحصل على الإخراج التالي:






نأمل أن يكون هذا الإخراج سهل الفهم. يتم تغيير عنوان الذاكرة وقيمتها. لا يمكن نقل المؤشر من موقع واحد إلا من خلال حساب مؤشر الزيادة في C++.

السيناريو 2: طرح مؤشرين في لغة C++

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



العمليات الأخرى مثل الجمع والضرب والقسمة غير ممكنة في المؤشر لأنها لا معنى لها في معالجة الذاكرة. مقتطف الكود مرفق في ما يلي:

#تشمل
انت مين ( ) {
يومئ [ ] = { 23 , 36 , 42 , 51 , 62 , 77 , 89 , 96 , 100 } ;
كثافة العمليات * ptrr1 = & إلى ذلك [ 3 ] ; // المؤشر إلى العنصر الثالث ( 42 )
كثافة العمليات * ptrr2 = & إلى ذلك [ 6 ] ; // المؤشر إلى العنصر السادس ( 89 )
ptrdiff_t com.ptrsubtract = ptrr2 - ptrr1؛

الأمراض المنقولة جنسيا::كوت << 'الفرق بين هذه العناوين هو:' << com.ptrsubtract << ' عناصر' << ستد::endl;
يعود 0 ;
}


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

يتم إرفاق إخراج هذا الكود في ما يلي:


الفرق بين هذه العناوين هو بالعنصر الملزمة وهو 3.

السيناريو 3: مقارنة مؤشرين أو أكثر في C++

في هذا السيناريو، سوف نتعلم كيفية مقارنة المؤشرات المختلفة في لغة C++ باستخدام عوامل علائقية مختلفة مثل '=='، '<='، '>='، '<'، '>'. لا يمكننا مقارنة المؤشرات إلا إذا كانت تشير إلى عنوان عناصر من نفس المصفوفة. تذكر أن مقارنة مؤشرين بأنواع مختلفة يمكن أن يؤدي إلى سلوك غير محدد. تم ذكر مقتطف الكود المرتبط بمقارنة المؤشر فيما يلي:

#تشمل
استخدام اسم للمحطة؛
انت مين ( )
{
إنت آر1 [ 10 ] = { 4 , 7 , 9 , أحد عشر , 14 , 16 , 18 , عشرين , 22 , 25 } ;
كثافة العمليات * ptr1 = & وصول1 [ 3 ] ;
كثافة العمليات * ptr2 = & وصول1 [ 6 ] ;
كثافة العمليات * ptr3 = & وصول1 [ 8 ] ;
كثافة العمليات * ptr4 = & وصول1 [ 9 ] ;
لو ( ptr1 ==ptr2 )
{
الأمراض المنقولة جنسيا::كوت << 'المؤشرات متساوية' << نهاية؛
}
آخر لو ( ptr3 < =ptr4 )
{
الأمراض المنقولة جنسيا::كوت << 'ptr3 أقل من أو يساوي ptr4' << endl ؛؛
}
آخر
{
الأمراض المنقولة جنسيا::كوت << 'لا تتم مقارنة المؤشرات في أي مرحلة' << نهاية؛
}
يعود 0 ;
}


هنا، نأخذ مصفوفة تحتوي على 10 عناصر. نعلن عن أربعة مؤشرات تشير إلى فهرس مختلف للمصفوفة. بعد ذلك، نقوم بمقارنة هذه المؤشرات الأربعة في ظروف مختلفة كما هو موضح في الكود المحدد. في حالة 'if'، تحقق مما إذا كان مؤشر 'ptr1' يساوي مؤشر 'ptr2'، ثم اطبع 'المؤشرات متساوية'. عندما يكون لدينا شروط متعددة حيث نستخدم شرط 'else if' للتحقق مما إذا كان مؤشر 'ptr3' أقل من يساوي مؤشر 'ptr4'. بعد كل هذا اضغط على تنفيذ> ترجمة وتشغيل خيار.

يتم إرفاق إخراج هذا الكود في ما يلي:


يعرض شرطًا صالحًا على شاشة وحدة التحكم ويخرج من التجميع. يحتوي مؤشر 'ptr3' على قيمة أقل من أو تساوي قيمة مؤشر 'ptr4'.

السيناريو 4: عرض رقم فردي باستخدام المؤشر الحسابي

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

#تشمل
انت مين ( ) {
أرقام كثافة العمليات [ ] = { 1 , 12 , 33 , 24 , خمسة عشر , 776 , 71 , 18 , 29 , خمسون } ;
كثافة العمليات * ptrr = أرقام؛
الأمراض المنقولة جنسيا::كوت << 'الأرقام الفردية في المصفوفات:' ;
ل ( إنت ط = 0 ; أنا < 10 ; ++أنا ) {
لو ( * ptrr % 2 ! = 0 ) {
الأمراض المنقولة جنسيا::كوت << * ptrr << ' ' ;
}
ptrr++;
}
الأمراض المنقولة جنسيا::كوت << ستد::endl;
يعود 0 ;
}


في الدالة الرئيسية، نأخذ مصفوفة تحتوي على 10 عناصر. نحتاج إلى مؤشر يشير إلى جميع العناصر الموجودة في المصفوفة للتحقق من العدد الفردي في المصفوفة. في حلقة 'for'، تحقق من الرقم الفردي عن طريق قسمة العنصر الحالي في المصفوفة. تتم زيادة عداد المؤشر بعد التحقق من عنصر واحد من المصفوفة.

بعد تنفيذ الكود، يتم عرض الإخراج على شاشة وحدة التحكم المبينة في ما يلي:


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

خاتمة

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