本章将利用实例帮助您更好的了解用户自定义函数
函数是执行特定任务的代码块。
C 允许您根据需要定义函数。这些函数称为用户定义函数。例如:
假设,您需要创建一个圆并根据半径和颜色为其着色。您可以创建两个函数来解决此问题:
- createCircle() 函数
- color()函数
下面利用实例介绍用户自定义函数
例1.两个整数相加
#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; //函数返回 }
1.函数原型
函数原型只是函数的声明,它指定函数的名称、参数和返回类型。它不包含函数体。
函数原型向编译器提供该函数稍后可能在程序中使用的信息。
函数原型的语法
returnType functionName(type1 argument1, type2 argument2, ...);
在上面的例子中,
int addNumbers (int a, int b);
是函数原型,其向编译器提供以下信息的:
- 函数的名称是 addNumbers();
- 函数的返回类型是 int;
- 两个 int 类型的参数被传递给函数
如果在 main() 函数之前定义了用户定义的函数,则不需要函数原型。
2.函数调用
程序的控制(程序流)通过函数调用转移到用户定义的函数。
函数调用语法:
functionName(argument1, argument2, ...);
在上面的例子中,函数调用的语句main() 函数中的是 addNumbers(n1, n2)语句。
3.函数的定义
函数定义包含执行特定任务的代码块。在我们的示例中,将两个数字相加并返回。
函数定义的语法
returnType functionName(type1 argument1, type2 argument2, ...)
{
//body of the function
}
调用函数时,程序的控制权转移到函数定义。并且,编译器开始执行函数体内的代码。
4.向函数传送参数
在编程中,argument 是指传递给函数的变量。在上面的示例中,在函数调用期间传递了两个变量 n1 和 n2。
参数 a 和 b 接受函数定义中传递的参数。这些参数称为函数的形式参数。
传递给函数的参数类型和形参必须匹配,否则编译器会抛出错误。
如果 n1 是 char 类型,a 也应该是 char 类型。如果 n2 是浮点型,变量 b 也应该是浮点型。
也可以在不传递参数的情况下调用函数。
5.返回语句
return 语句终止函数的执行并向调用函数返回一个值。程序控制在 return 语句之后转移到main函数。
在上面的例子中,result的值被返回给主函数。 main() 函数中的 sum 变量被赋予了这个值。
返回语句的语法
return (expression);
例如
return a;
return (a+b);
函数返回值的类型与函数原型和函数定义中指定的返回类型必须匹配。