C 用户定义函数

本文带您学习在 C 语言中创建和使用函数。

在 C 语言中,用户定义的函数是用户根据自己的需求自己定义的函数,和标准库函数区分开来。您可以很方便的创建函数和使用它们。

示例:用户定义函数

下面的示例用来计算两个数的和。我们创建了一个函数 addNumbers() 来完成这个任务。

#include <stdio.h>
int addNumbers(int a, int b);         // 函数原型

int main()
{
    int n1,n2,sum;

    printf("Enters two numbers: ");
    scanf("%d %d",&n1,&n2);

    sum = addNumbers(n1, n2);        // 函数调用
    printf("sum = %d",sum);

    return 0;
}

int addNumbers(int a, int b)         // 函数定义
{
    int result;
    result = a+b;
    return result;                  // 返回
}

函数原型

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

函数原型向编译器提供函数的签名信息。

函数原型的语法

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

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

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

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

调用函数

程序的控制权通过调用传递给用户定义的函数。

函数调用的语法

functionName(argument1, argument2, ...);

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

函数定义

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

函数定义的语法

returnType functionName(type1 argument1, type2 argument2, ...)
{
  // 函数体
}

当一个函数被调用时,程序的控制被转移到函数定义中。然后,编译器开始执行函数体内的代码。

将参数传递给函数

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

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

将参数传递给函数
将参数传递给函数

传递给函数的参数类型必须与形参匹配,否则编译器会报错。

如果 n1char 类型, a 也应该是字符类型。如果 n2 是浮点型,变量 b 也应该是浮点型。

return 语句

return 语句终止函数的执行并向调用函数返回一个值。程序控制权在 return 语句之后转移到调用函数。

在上面的例子中,result 变量的值返回给主函数,并把这个返回的值赋值给 main() 函数中的 sum 变量。

函数的返回语句
函数的返回语句

return 语句的语法

return expression;

例如,

return a;
return (a+b);

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

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