البرمجة

طباعة قيمة دالة مؤشرة في C

لحل هذه المشكلة وطباعة قيمة الدالة المؤشرة بشكل صحيح، يجب استدعاء الدالة المؤشرة باستخدام عملية التفصيل ()، كما يجب تمرير القيمة المناسبة للدالة.

الكود الصحيح يكون كالتالي:

c
#include struct t { //structure definition int a; int (*fun) (int a); }; int get_a (int a) { //function definition a = a*2; return a; } int main () { struct t test; //variable creation get_a(5); //function activating test.fun = &get_a; //assignation to the pointer function printf ("%d\n",test.fun(5)); //طباعة قيمة الدالة المؤشرة return 0; }

بعد تعديل الكود، يجب أن يقوم البرنامج بطباعة القيمة الصحيحة التي تم عملية الضرب بها، أي قيمة 10.

المزيد من المعلومات

بالطبع! في الكود السابق، يتم تعريف هيكل struct t الذي يحتوي على متغيرين، a من النوع int و fun من النوع “مؤشر على دالة” التي تأخذ int وترجع int. ثم يتم تعريف دالة get_a التي تأخذ int وترجع int، وتقوم بضرب العدد الممرر لها بالقيمة 2.

في الدالة main، يتم إنشاء متغير test من نوع struct t، ويتم تعيين دالة get_a إلى test.fun باستخدام عملية العنونة &. وعند طباعة قيمة *(test.fun)، يتم طباعة قيمة المؤشر نفسه بدلاً من نتيجة الدالة، لأنه لم يتم استدعاء الدالة بشكل صحيح.

لحل هذه المشكلة، يجب استدعاء الدالة test.fun باستخدام عملية الاستدعاء () وتمرير القيمة المناسبة لها، كما تم في الكود المعدل، حيث تم استدعاء الدالة test.fun(5) وتمرير القيمة 5 لها، مما أدى إلى طباعة القيمة الصحيحة 10.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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