C 语言中的函数
原文:https://www.studytonight.com/c/user-defined-functions-in-c.php
函数是执行特定任务的代码块。
在许多情况下,我们可能需要在一个程序中多次编写同一行代码。这可能会导致不必要的代码重复、bug,甚至对程序员来说变得无聊。因此,C 语言提供了一种方法,在这种方法中,您可以以函数的形式声明和定义一组语句,并且可以在任何需要的时候调用和使用它。
用户定义的这些功能也称为用户自定义功能
c 函数可以分为两类,
- 库函数
- 用户自定义功能
库函数是已经在 C 库中定义的函数,例如printf()
、scanf()
、strcat()
等。您只需要包含适当的头文件来使用这些功能。这些已经在 C 库中声明和定义了。
另一方面,用户自定义函数是用户在编写程序时定义的那些函数。这些功能是为了代码的可重用性和节省时间和空间。
使用函数的好处
- 它为你的程序结构提供了模块化。
- 它使您的代码可重用。您只需要通过函数的名称来调用它,就可以在任何需要的地方使用它。
- 对于有数千行代码的大型程序,如果使用函数,调试和编辑会变得更容易。
- 它使程序更易读和容易理解。
函数声明
函数声明的一般语法是,
returntype functionName(type1 parameter1, type2 parameter2,...);
像任何变量或数组一样,函数在使用前也必须声明。函数声明通知编译器函数名、接受的参数及其返回类型。函数的实际主体可以单独定义。也叫功能原型。函数声明由 4 部分组成。
- 返回类型
- 函数名
- 参数列表
- 终止分号
返回类型
当一个函数被声明执行某种计算或任何操作,并期望在最后提供某种结果时,在这种情况下,在函数体的末尾添加一个return
语句。返回类型指定函数期望返回到调用该函数的程序的值类型(int
、float
、char
、double
)。
注意:如果你的函数没有返回值,返回类型为void
。
函数名
函数名是一个标识符,它指定了函数的名称。函数名是任何有效的 C 标识符,因此必须遵循与 C 语言中其他变量相同的命名规则。
参数列表
参数列表声明了调用函数时所需的参数类型和数量。此外,当调用函数时,参数列表中的参数接收参数值。它们通常被称为形式参数。
举个例子
让我们编写一个简单的程序,带有一个main()
函数,和一个用户定义的函数来相乘两个数字,这将从main()
函数调用。
#include<stdio.h>
int multiply(int a, int b); // function declaration
int main()
{
int i, j, result;
printf("Please enter 2 numbers you want to multiply...");
scanf("%d%d", &i, &j);
result = multiply(i, j); // function call
printf("The result of muliplication is: %d", result);
return 0;
}
int multiply(int a, int b)
{
return (a*b); // function defintion, this can be done in one line
}
函数定义语法
就像上面的例子一样,函数定义的一般语法是,
returntype functionName(type1 parameter1, type2 parameter2,...)
{
// function body goes here
}
第一行返回类型 功能名称(类型 1 参数 1,类型 2 参数 2,...)称为函数头,花括号内的语句称为函数体。
注意:定义函数时,函数头括号后没有分号(;
),不像声明函数或调用函数时。
功能体
函数体包含执行所需任务所需的声明和语句(算法)。正文包含在花括号{ ... }
内,由三部分组成。
- 局部变量声明(如果需要)。
- 功能语句执行功能内部的任务。
- 一个 return 语句返回函数求值的结果(如果返回类型为
void
,则不需要 return 语句)。
调用函数
当一个函数被调用时,程序的控制权转移到该函数。
functionName(argument1, argument2,...);
在上例中,main()
函数内部的语句multiply(i, j);
是函数调用。
向函数传递参数
参数是在函数调用期间指定的值,在定义函数时为其声明形式参数。
可以有一个带有参数但没有返回类型的函数。如果函数接受参数,它也必须返回一个结果,这不是必须的。
在声明函数时,我们声明了两个类型为int
的参数a
和b
。因此,在调用该函数时,我们需要传递两个参数,否则我们会得到编译错误。传递的两个参数应该在函数定义中接收,这意味着函数定义中的函数头应该有两个参数来保存参数值。这些接收到的参数也被称为形式参数。声明、调用和定义函数时变量的名称可以不同。
从函数返回值
函数可能返回结果,也可能不返回结果。但是如果是这样,我们必须使用return
语句来输出结果。return
语句也结束函数执行,因此它必须是任何函数的最后一条语句。如果在return
语句之后写任何语句,都不会被执行。
使用return
语句返回的值的数据类型应该与函数声明和定义中提到的返回类型相同。如果其中任何一个不匹配,您将得到编译错误。
在下一个教程中,我们将学习 C 语言中不同类型的用户定义函数,以及递归中使用的函数嵌套概念。