原文: https://www.programiz.com/c-programming/c-user-defined-functions

在本教程中,您将借助示例学习在 C 编程中创建用户定义的函数。

函数是执行特定任务的代码块。

C 允许您根据需要定义函数。 这些函数称为用户定义函数。 例如:

假设您需要创建一个圆并根据半径和颜色为其着色。 您可以创建两个函数来解决此问题:

  • createCircle()函数
  • color()函数

示例:用户定义的函数

这是相加两个整数的示例。 为了执行此任务,我们创建了一个用户定义的addNumbers()

  1. #include <stdio.h>
  2. int addNumbers(int a, int b); // function prototype
  3. int main()
  4. {
  5. int n1,n2,sum;
  6. printf("Enters two numbers: ");
  7. scanf("%d %d",&n1,&n2);
  8. sum = addNumbers(n1, n2); // function call
  9. printf("sum = %d",sum);
  10. return 0;
  11. }
  12. int addNumbers(int a, int b) // function definition
  13. {
  14. int result;
  15. result = a+b;
  16. return result; // return statement
  17. }

函数原型

函数原型只是函数的声明,用于指定函数的名称,参数和返回类型。 它不包含函数体。

函数原型向编译器提供信息,该函数以后可以在程序中使用。

函数原型的语法

  1. returnType functionName(type1 argument1, type2 argument2, ...);

在上面的示例中,int addNumbers(int a, int b);是函数原型,它向编译器提供以下信息:

  1. 该函数的名称为addNumbers()
  2. 函数的返回类型为int
  3. 类型为int的两个参数传递给函数

如果在main()函数之前定义了用户定义的函数,则不需要函数原型。


调用函数

程序的控制权通过调用转移到用户定义的函数。

函数调用的语法

  1. functionName(argument1, argument2, ...);

在上面的示例中,使用main()函数内部的addNumbers(n1, n2);语句进行函数调用。


函数定义

函数定义包含执行特定任务的代码块。 在我们的示例中,将两个数字相加并返回。

函数定义的语法

  1. returnType functionName(type1 argument1, type2 argument2, ...)
  2. {
  3. //body of the function
  4. }

调用函数时,程序的控制权将转移到函数定义中。 并且,编译器开始在函数体内执行代码。


将参数传递给函数

在编程中,参数是指传递给函数的变量。 在上面的示例中,在函数调用期间传递了两个变量n1n2

参数ab接受函数定义中传递的参数。 这些参数称为函数的形式参数。

C 用户定义的函数 - 图1

传递给函数的参数类型和形式参数必须匹配,否则,编译器将引发错误。

如果n1char类型,则sum也应为char类型。 如果n2为浮点型,则变量b也应为浮点型。

也可以在不传递参数的情况下调用函数。


return语句

return语句终止函数的执行并将值返回给调用函数。 return语句之后,程序控制权将转移到调用函数。

在上面的示例中,result变量的值返回到主函数。 为main()函数中的sum变量分配了该值。

C 用户定义的函数 - 图2

return语句的语法

  1. return (expression);

例如,

  1. return a;
  2. return (a+b);

从函数返回的值的类型与函数原型和函数定义中指定的返回类型必须匹配。

访问此页面以了解有关传递参数和从函数返回值的更多信息。