Latest web development tutorials

C ++ وظيفة

هو عبارة عن مجموعة من الوظائف لأداء بيان المهمة معا. كل برنامج C ++ لديه وظيفة واحدة على الأقل، وهذا هوأهم وظيفة الرئيسي ()، ويمكنكل برنامج بسيط تحدد مهام إضافية أخرى.

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

إعلان وظيفة يحكي اسم وظيفة مترجم، نوع الإرجاع ومعلمة.يقدمتعريف وظيفة الجسم الفعلي للوظيفة.

C ++ مكتبة القياسية يوفر الكثير من الوظائف المدمج في البرنامج يمكن الاتصال به. على سبيل المثال، يتم استخدامstrcat وظيفة ()لربط جملتين،وmemcpyوظيفة()لنسخ الذاكرة إلى موقع آخر.

هناك ما يسمى العديد من الوظائف مثل الطرق والإجراءات والوظائف الفرعية، وهلم جرا.

وظائف محددة

الشكل العام للتعريف وظيفة في C ++ كما يلي:

return_type function_name( parameter list )
{
   body of the function
}

في C ++، وتتكون وظيفة من ضربة رأس وظيفة ومكونات الجسم وظيفة. المدرجة أدناه هي جزء من كل وظيفة:

  • نوع الإرجاع: وظيفة يمكن إرجاع القيمة.return_type هو نوع بيانات القيمة التي تم إرجاعها بواسطة الدالة. بعض أداء مهام العملية المطلوبة دون قيمة الإرجاع، في هذه الحالة، return_typeالفراغ الكلمة.
  • اسم الوظيفة: هذا هو الاسم الفعلي للوظيفة.اسم الوظيفة وقائمة المعلمة تشكل معا التوقيع وظيفة.
  • المعلمات: المعلمة يشبه نائبا.عندما يتم استدعاء الدالة، يمكنك تمرير قيمة إلى المعلمة، وتسمى هذه القيمة المعلمات الفعلية. وتشمل قائمة المعلمة نوع المعلمات وظيفة، وكمية الطلب. المعلمة اختيارية، وهذا هو القول، قد لا يحتوي على وظيفة المعلمات.
  • يحتوي الجسم وظيفة مجموعة من الوظائف المحددة بيانالمهمة: وظيفة الرئيسي.

أمثلة

وفيما يلي وظيفةماكس () في التعليمات البرمجية المصدر.تحتاج هذه الدالة معلمتين NUM1 وNUM2، الذي سيعود أكبر من رقمين الاعتماد:

// 函数返回两个数中较大的那个数
 
int max(int num1, int num2) 
{
   // 局部变量声明
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

إعلان وظيفة

إعلان وظيفة يحكي اسم وظيفة مترجم، وكيفية استدعاء وظيفة.يمكن تعريف الجسم الفعلية من وظيفة على حدة.

ويشمل تعريف الدالة على الأقسام التالية:

return_type function_name( parameter list );

المحددة أعلاه لأقصى الحدود وظيفة ()، وفيما يلي تعريف الدالة:

int max(int num1, int num2);

في تعريف الدالة، اسم المعلمة ليس مهما، فقط مطلوب المعلمة نوع، لذلك وفيما يلي بيان صحيح:

int max(int, int);

عند تعريف دالة في ملف مصدر واستدعاء دالة في ملف آخر، يطلب من إعلان وظيفة. في هذه الحالة، يجب أن تتصل الجزء العلوي من وظيفة إعلان وظيفة الملف.

وظائف الاتصال

عند إنشاء C ++ وظيفة تحدد ما تفعل وظائف، وبعد ذلك لإكمال المهمة عن طريق استدعاء الدالة تم تعريفه.

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

عند استدعاء الدالة، تمرير المعلمات المطلوبة، إذا كانت الدالة بإرجاع قيمة، يمكنك تخزين قيمة الإرجاع. على سبيل المثال:

#include <iostream>
using namespace std;
 
// 函数声明
int max(int num1, int num2);
 
int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
   int ret;
 
   // 调用函数来获取最大值
   ret = max(a, b);
 
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// 函数返回两个数中较大的那个数
int max(int num1, int num2) 
{
   // 局部变量声明
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

يتم وضع وظيفة ماكس () وظيفة الرئيسية () قطعة، ترجمة التعليمات البرمجية المصدر. عند تشغيل الملف القابل للتنفيذ النهائي ستسفر عن النتائج التالية:

Max value is : 200

وسائط الدالة

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

مثل أشكال أخرى من المعلمات يتم إنشاء المتغيرات المحلية ضمن الدالة عند دخول وظيفة، والخروج يتم إتلاف وظيفة.

عندما يتم استدعاء الدالة، هناك طريقتان لتمرير المعلمات إلى وظيفة:

调用类型描述
传值调用 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
指针调用 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
引用调用 该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

افتراضيا، C ++ باستخداماستدعاء من قبل لتمرير المعلمات.عموما، هذا يعني أن رمز ضمن وظيفة لا يمكن تغيير المعايير المستخدمة لاستدعاء الدالة. الأمثلة المذكورة من قبل، استدعاء وظيفة ماكس () عند استخدام نفس الأسلوب.

القيمة الافتراضية للمعلمة

عند تعريف وظيفة، يمكنك تحديد قيمة افتراضية لكل معلمة في قائمة المعلمات وراء. عندما يتم استدعاء الدالة، إذا تم ترك قيمة المعلمة الفعلية فارغة، ثم استخدام القيم الافتراضية.

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

#include <iostream>
using namespace std;
 
int sum(int a, int b=20)
{
  int result;

  result = a + b;
  
  return (result);
}

int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
   int result;
 
   // 调用函数来添加值
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // 再次调用函数
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

Total value is :300
Total value is :120