مؤشر الدالة هو متغير يخزن عنوان الذاكرة حيث توجد الدالة. يسمح لك باستدعاء وظيفة على هذا العنوان وتمريرها إلى وظائف أخرى كوسيطة. مؤشرات وظيفة مفيدة جدا في ج programming البرمجة ويمكن استخدامها لحل المهام المختلفة.
لإنشاء مؤشر إلى دالة ، يجب تحديد نوع قيمة إرجاع الدالة وأنواع الوسائط التي تقبلها الدالة. يحدد إعلان المؤشر اسم المتغير الذي سيخزن عنوان الوظيفة ، والمشغل " * " ، الذي يشير إلى أنه مؤشر.
مثال:
كثافة العمليات (*بتر) (كثافة العمليات ، كثافة العمليات);
في هذا المثال ، قمنا بإنشاء مؤشر إلى وظيفة باسم " بتر "، والذي يأخذ وسيطتين من نوع" إنت "وإرجاع قيمة من نوع"إنت".
لاستخدام مؤشر إلى وظيفة ، يجب تهيئة مع عنوان الذاكرة من وظيفة. للقيام بذلك ، قم بتعيين اسم الوظيفة إلى المؤشر بدون أقواس.
مثال:
بتر = وظيفة
في هذا المثال ، نقوم بتعيين مؤشر " بتر "إلى عنوان الذاكرة من وظيفة" وظيفة". الآن يمكننا استدعاء الوظيفة على العنوان المخزن في المؤشر وتمرير المؤشر إلى الوظيفة إلى وظائف أخرى.
- المفهوم والمبادئ الأساسية لمؤشر الوظيفة
- لماذا أحتاج إلى مؤشر إلى وظيفة?
- بناء الجملة وإنشاء مؤشر وظيفة
- كيفية إعلان مؤشر إلى وظيفة
- أمثلة على إنشاء مؤشر دالة
- باستخدام مؤشر وظيفة
- سؤال وجواب
- ما هو مؤشر وظيفة?
- كيف يمكنني إنشاء مؤشر إلى وظيفة?
- كيف يمكنني استدعاء وظيفة من خلال مؤشر?
- هل من الممكن لتمرير مؤشر إلى وظيفة كوسيطة إلى وظيفة أخرى?
- في الحالات التي يكون من المفيد استخدام مؤشر إلى وظيفة?
المفهوم والمبادئ الأساسية لمؤشر الوظيفة
مؤشر الوظيفة هو متغير يحتوي على العنوان في الذاكرة حيث توجد الوظيفة. يتيح لك ذلك تمرير الوظائف كمعلمة إلى وظائف أخرى ، بالإضافة إلى حفظ عنوان الوظيفة للاستدعاء لاحقا.
المبادئ الأساسية لاستخدام مؤشر وظيفة:
- تحديد مؤشر إلى وظيفة. يجب الإعلان عن مؤشر الوظيفة بنفس طريقة إعلان الوظيفة ، ولكن مع إضافة الحرف " * " قبل اسم المتغير.
- تعيين عنوان إلى وظيفة. يمكن تعيين عنوان الدالة لمؤشر إلى دالة باستخدام مشغل العنوان"&".
- استدعاء وظيفة عبر مؤشر. يمكن استدعاء دالة عبر مؤشر إلى دالة باستخدام مشغل الاتصال" ()".
- تمرير مؤشر إلى وظيفة كمعلمة. يمكن تمرير مؤشر إلى وظيفة إلى وظيفة أخرى كوسيطة.
مثال على استخدام مؤشر الدالة:
# تشمل
// الوظائف المراد الرجوع إليها بواسطة المؤشر
المجموع الكلي (أ ، ب)
{
العودة أ + ب;
}
الفرق الباحث (الباحث أ ، الباحث ب)
{
العودة أ-ب;
}
// تعريف مؤشر الوظيفة
اكتبصحافة دولية (*ماثفونك) (كثافة العمليات ، كثافة العمليات);
كثافة العمليات الرئيسية()
{
ماثفونك ماثفونك ؛ / / إعلان مؤشر
// تعيين عنوان الوظيفة
ماثفونك = ∑
// استدعاء الوظيفة من خلال المؤشر
النتيجة الدولية = ماثفونك (5 ، 3);
برينتف ("المجموع: ٪ د
"،النتيجة);
// تعيين العنوان إلى وظيفة أخرى
ماثفونك = والفرق
// استدعاء الوظيفة من خلال المؤشر
النتيجة = ماثفونك (5 ، 3);
برينتف ("الفرق: ٪ د
"،النتيجة);
العودة 0;
}
في هذا المثال ، يتم إنشاء مؤشر إلى وظيفة باسم "ماثفونك" ، أعلن باستخدام عامل تيبيديف. ثم يتم تعيين عنوان وظيفة "سوم" لمؤشر "ماثفونك" باستخدام عامل التشغيل"&". ونتيجة لذلك ، يمكن استدعاء وظيفة" سوم "من خلال مؤشر" ماثفونك " ، ويمر عليه المعلمات المناسبة. وبالمثل ، يمكنك تعيين عنوان الوظائف الأخرى والاتصال بها من خلال مؤشر الوظيفة.
لماذا أحتاج إلى مؤشر إلى وظيفة?
مؤشر الدالة هو متغير يحتوي على عنوان دالة في الذاكرة. يسمح لنا بتمرير الوظائف كمعلمات ، وإرجاع الوظائف من الوظائف الأخرى واستخدامها لحل المهام المختلفة.
فيما يلي بعض الأسباب الرئيسية التي تجعل مؤشر الوظيفة مفيدا:
- الاستدعاءات. يمكن استخدام مؤشر إلى دالة لتمرير دالة كوسيطة إلى دالة أخرى. هذا مفيد بشكل خاص عندما تحتاج إلى استدعاء وظيفة في سياق معين أو بعد إجراء عمليات معينة.
- تحميل ديناميكي للوظائف. يمكن استخدام مؤشر الوظيفة لتحميل الوظائف ديناميكيا من وحدات أو مكتبات مختلفة. هذا يجعل من الممكن تحديد واستخدام وظائف معينة حسب احتياجات البرنامج.
- رد. يمكن استخدام مؤشر الوظيفة لاستدعاء وظيفة من داخل وظيفة أخرى لإرجاع نتيجة أو تمرير التحكم مرة أخرى إلى وظيفة الاتصال. يمكن أن يكون هذا مفيدا ، على سبيل المثال ، عند التعامل مع الأخطاء أو عند إجراء العمليات الحسابية المعقدة.
- تعدد الأشكال. يسمح لنا مؤشر الوظيفة بإنشاء هياكل بيانات متعددة الأشكال وخوارزميات تعمل مع أنواع مختلفة من البيانات أو تعطي نتائج مختلفة اعتمادا على الوظيفة التي تم تمريرها.
كل هذه الميزات تجعل مؤشر الوظيفة أداة برمجة قوية وتسمح لنا بإنشاء برامج مرنة وقابلة للتوسيع.
بناء الجملة وإنشاء مؤشر وظيفة
مؤشر الدالة هو متغير يخزن عنوان دالة في الذاكرة. يسمح لك استخدام مؤشرات الوظائف بتمرير الوظائف كوسائط إلى وظائف أخرى ، أو استخدامها في هياكل البيانات ، أو استدعاء وظيفة محددة ديناميكيا أثناء تنفيذ البرنامج.
لإنشاء مؤشر إلى دالة ، يجب تحديد نوع قيمة إرجاع الدالة وقائمة بأنواع المعلمات المقبولة بواسطة الدالة. بناء الجملة لإنشاء مؤشر إلى وظيفة كما يلي:
| نوع القيمة القابلة للإرجاع | (*اسم التسمية) | (نوع الجدال1, نوع الجدال2,...) |
أبسط مثال على ذلك هو إنشاء مؤشر إلى دالة بدون وسيطات ولا قيمة إرجاع:
باطل (*وظيفة مؤشر) ();في هذا المثال ، الفراغ هو نوع قيمة إرجاع الدالة ، () هي قائمة أنواع وسيطات الدالة ،و * مؤشر الدالة هو اسم مؤشر الدالة.
لإنشاء مؤشر إلى وظيفة مع الوسيطات وقيمة الإرجاع ، يجب تحديد أنواع الوسيطات ونوع قيمة الإرجاع. على سبيل المثال ، إنشاء مؤشر إلى وظيفة التي تأخذ وسيطتين من نوع إنت وإرجاع قيمة نوع مزدوج:
مزدوج (*وظيفة مؤشر) (كثافة العمليات ، كثافة العمليات);في هذه الحالة ، مزدوج هو نوع قيمة إرجاع الدالة ،(إنت ، إنت) هي قائمة أنواع وسيطات الدالة ، و *الدالة هو اسم المؤشر إلى الدالة.
عند إعلان مؤشر وظيفة ، يمكنك أيضا استخدام الكلمة تيبيديف. يتيح لك ذلك إنشاء اسم مستعار لمؤشر الوظيفة ، مما يجعل الكود أكثر قابلية للقراءة. على سبيل المثال:
اكتبديف باطل (*وظيفةمؤشر) ();بعد إعلان مثل هذا الاسم المستعار ، يمكنك إنشاء مؤشر إلى الوظيفة على النحو التالي:
وظيفةمؤشر وظيفةمؤشر;في هذا المثال ، مؤشر الدالة هو اسم مستعار لنوع مؤشر الدالة بدون وسيطات ولا قيمة إرجاع.
إنشاء واستخدام مؤشرات وظيفة يوفر ميزات إضافية في تطوير البرمجيات. يتيح لك ذلك إنشاء كود مرن وقابل للتطوير يمكنه التكيف مع المواقف المختلفة وتغيير سلوك البرنامج في وقت التشغيل.
كيفية إعلان مؤشر إلى وظيفة
يتم استخدام مؤشر إلى وظيفة في ج store لتخزين عنوان الوظيفة والاتصال بها إذا لزم الأمر. يتكون إعلان مؤشر الدالة من اسم المؤشر ونوع البيانات الذي يشير إلى نوع قيمة إرجاع الدالة وقائمة وسيطات الدالة.
بناء الجملة لإعلان مؤشر وظيفة:
نوع القيمة القابلة للإرجاع (*اسم _ التسمية) (الوسائط);
أين:
- نوع القيمة القابلة للإرجاع هو نوع البيانات التي يتم إرجاعها بواسطة الوظيفة.
- اسم_مسمى هو اسم المتغير الذي سيتم تخزين عنوان الدالة.
- الوسيطات-قائمة بوسيطات الوظائف التي يمكن حذفها إذا كانت الوظيفة لا تقبل الوسيطات.
مثال على إعلان مؤشر إلى دالة:
كثافة العمليات (*بتر) (كثافة العمليات ، كثافة العمليات);
في هذا المثال ، يتم الإعلان عن المؤشر إلى دالة تقوم بإرجاع عدد صحيح وتقبل وسيطتين صحيحتين.
إعلان مؤشر إلى وظيفة يسمح لك لتعيين عنوان وظيفة معينة. على سبيل المثال:
مجموع الباحث (الباحث أ ، الباحث ب) {
العودة أ + ب;
}
إنت (*بتر) (إنت ، إنت) = ∑
في هذا المثال ، يتم تعيين متغير بتر عنوان وظيفة المجموع. الآن ، عند استدعاء مؤشر إلى دالة ، سيتم استدعاء دالة المجموع.
أمثلة على إنشاء مؤشر دالة
مؤشر الدالة هو متغير يخزن عنوان دالة في ذاكرة الكمبيوتر. يتيح لك إنشاء مؤشر إلى دالة استدعاء دالة باستخدام قيمتها.
لإنشاء مؤشر إلى وظيفة ، تحتاج إلى تحديد نوع قيمة الإرجاع وأنواع وسيطات الوظيفة التي سيشير إليها المؤشر. مثال على ذلك هو مقتطف التعليمات البرمجية التالي:
"'ج c
مجموع الباحث (الباحث أ ، الباحث ب) {
العودة أ + ب;
}
إنت (*سوم) (إنت ، إنت) = سوم;
«`
في هذا المثال ، يتم تعريف الدالة 'مجموع' ، الذي يأخذ وسيطتين من نوع 'كثافة العمليات `وإرجاع قيمة من نوع`كثافة العمليات'. ثم يتم تعريف مؤشر إلى وظيفة `سوم ` ، الذي يحتوي على نوع`إنت(*)(إنت ، إنت)'. ثم يتم تعيين هذا المؤشر عنوان وظيفة 'مجموع'.
بعد ذلك ، يمكنك استدعاء الدالة من خلال مؤشر باستخدام عامل استدعاء الوظيفة `()'. مثال:
"'ج c
النتيجة الدولية = المجموع (10، 5);
«`
في هذا المثال ، يتم استدعاء دالة ' سوم 'عبر مؤشر' سوم-بتر 'مع الوسيطات' 10 ' و '5 ` ، والتي يتم تخزين نتيجتها في متغير` النتيجة'.
يمكنك أيضا تمرير مؤشر إلى وظيفة كوسيطة إلى وظيفة أخرى. مثال:
"'ج c
نتيجة الطباعة الفارغة (كثافة العمليات (*الوظيفة) (كثافة العمليات ، كثافة العمليات) ، كثافة العمليات أ ، كثافة العمليات ب) {
النتيجة الدولية = الوظيفة (أ ، ب);
الأمراض المنقولة جنسيا:: كوت < < "النتيجة:" < < نتيجة < < ستد:: إندل;
}
نتيجة الطباعة (خلاصة القول ، 10 ، 5);
«`
في هذا المثال ، تأخذ الدالة` برينت_ريسولت 'مؤشر إلى الدالة 'فون_بتر' ، الحجج ' أ ' و 'ب'. داخل الدالة ، يتم استدعاء الدالة المشار إليها بواسطة مؤشر `فون_بتر` ، ويتم عرض النتيجة على الشاشة.
هذه مجرد أمثلة على إنشاء مؤشر إلى وظيفة. وبالمثل ، يمكنك إنشاء مؤشرات إلى وظائف أخرى باستخدام أنواع مختلفة من قيم الإرجاع والوسيطات.
باستخدام مؤشر وظيفة
مؤشر إلى دالة في ج allows يسمح لك بتخزين عنوان دالة في متغير واستدعاء تلك الوظيفة على هذا العنوان. يكون هذا مفيدا عندما تحتاج إلى استدعاء وظائف مختلفة بناء على شروط معينة ، أو عندما يجب تحديد وظيفة أو تمريرها كوسيطة.
لاستخدام مؤشر وظيفة ، تحتاج إلى اتباع عدة خطوات:
- .
- أعلن مؤشر إلى وظيفة. على سبيل المثال:
- احصل على عنوان الوظيفة وقم بتعيينها للمؤشر. على سبيل المثال:
- لاستدعاء دالة من خلال مؤشر باستخدام عامل استدعاء الوظيفة. Например:
Пример использования указателя на функцию:
#include
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int main() {
int (*ptr)(int, int);
ptr = &add
int sum = (*ptr)(6, 4);
std::cout << "Сумма: " << sum << std::endl;
ptr = &subtract
int difference = (*ptr)(6, 4);
std::cout << "Разность: " << difference << std::endl;
ptr = &multiply
int product = (*ptr)(6, 4);
std::cout << "Произведение: " << product << std::إندل;
العودة 0;
}
ويتم تعيين عناوين هذه الوظائف إليها. بعد ذلك ، تحدث استدعاءات الوظائف من خلال المؤشر ، ويتم عرض نتائجها على الشاشة.
سؤال وجواب
ما هو مؤشر وظيفة?
مؤشر الدالة هو متغير يحتوي على عنوان دالة في ذاكرة الكمبيوتر. يتيح لك ذلك استدعاء الوظيفة التي يشير إليها المؤشر في أي مكان في البرنامج.
كيف يمكنني إنشاء مؤشر إلى وظيفة?
لإنشاء مؤشر إلى وظيفة ، يجب عليك أولا إعلان نوعه ، وتحديد نوع الإرجاع للوظيفة وأنواع معلماتها ، ثم إنشاء متغير مؤشر وتعيين عنوان الوظيفة.
كيف يمكنني استدعاء وظيفة من خلال مؤشر?
لاستدعاء دالة من خلال مؤشر ، تحتاج إلى إلغاء الرجوع إلى المؤشر باستخدام عامل التشغيل " * " ، ثم إضافة معلمات الوظيفة إليه بين قوسين. يتيح لك ذلك استدعاء الوظيفة التي يشير إليها المؤشر وتمرير المعلمات إليها.
هل من الممكن لتمرير مؤشر إلى وظيفة كوسيطة إلى وظيفة أخرى?
نعم ، يمكنك تمرير مؤشر إلى وظيفة كوسيطة إلى وظيفة أخرى. هذا يسمح لك باستخدام مؤشرات وظيفة لرد الاتصال-تمرير وظيفة كمعلمة إلى وظيفة أخرى واستدعاء داخله.
في الحالات التي يكون من المفيد استخدام مؤشر إلى وظيفة?
تكون مؤشرات الوظائف مفيدة عندما تحتاج إلى تحديد وظيفة لتنفيذها ديناميكيا ، وعندما يتم تمرير الوظائف كوسيطات أو إرجاعها من وظائف أخرى ، وعندما تكون هناك حاجة إلى رد اتصال دالة. كما أنها تستخدم في العديد من المكتبات والأطر للتعامل مع الأحداث.