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 <stdio.h>
 
/* 函数声明 */
int max(int num1, int num2);
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
   int ret;
 
   /* 调用函数来获取最大值 */
   ret = max(a, b);
 
   printf( "Max value is : %d\n", ret );
 
   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 باستخداماستدعاء من قبل لتمرير المعلمات.عموما، هذا يعني أن رمز ضمن وظيفة لا يمكن تغيير المعلمات الفعلية المستخدمة لاستدعاء الدالة.