📅  最后修改于: 2020-12-19 05:26:47             🧑  作者: Mango
函数是一起执行任务的一组语句。每个C程序至少都有一个函数main() ,所有最简单的程序都可以定义其他函数。
您可以将代码分成单独的函数。如何在不同功能之间划分代码取决于您,但是从逻辑上讲,这种划分使得每个函数可以执行特定任务。
函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供了函数的实际身体。
C标准库提供了程序可以调用的许多内置函数。例如, strcat()可以连接两个字符串, memcpy()可以将一个内存位置复制到另一位置,还有更多功能。
函数也可以称为方法或子例程或过程等。
用C编程语言编写的函数定义的一般形式如下-
return_type function_name( parameter list ) {
body of the function
}
C编程中的函数定义由函数头和函数体组成。这是函数的所有部分-
返回类型-函数可以返回一个值。 return_type是函数返回的值的数据类型。某些函数执行所需的操作而不返回值。在这种情况下,return_type是关键字void 。
功能名称-这是函数的实际名称。函数名称和参数列表共同构成函数签名。
参数-参数就像一个占位符。调用函数,将一个值传递给参数。此值称为实际参数或自变量。参数列表是指类型,顺序和数量的函数的参数。参数是可选的;也就是说,一个函数可能不包含任何参数。
函数体-函数体包含定义函数的语句的集合。
下面给出的是名为max()的函数的源代码。此函数采用两个参数num1和num2并返回两个之间的最大值-
/* function returning the max between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
函数声明告诉编译器函数名称以及如何调用函数。该函数的实际主体可以单独定义。
函数声明包含以下部分-
return_type function_name( parameter list );
对于上面定义的函数max(),函数声明如下-
int max(int num1, int num2);
参数名称在函数声明中并不重要,仅它们的类型是必需的,因此以下也是有效的声明-
int max(int, int);
在一个源文件中定义一个函数并在另一个文件中调用该函数,需要函数声明。在这种情况下,你应该在文件调用函数的顶部声明函数。
在创建C函数,您需要定义函数。要使用一个函数,您将必须调用该函数来执行定义的任务。
当程序调用函数,程序控制权将转移到被调用函数。被调用函数执行已定义的任务,并且在执行其return语句或达到其函数结尾的右括号时,它将程序控制权返回给主程序。
要调用一个函数,您只需要传递所需的参数以及函数名称,如果函数返回一个值,则可以存储返回的值。例如-
#include
/* function declaration */
int max(int num1, int num2);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
int ret;
/* calling a function to get max value */
ret = max(a, b);
printf( "Max value is : %d\n", ret );
return 0;
}
/* function returning the max between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
我们保留了max()和main()并编译了源代码。在运行最终可执行文件时,它将产生以下结果-
Max value is : 200
如果函数要使用参数,则它必须声明接受参数值的变量。这些变量称为函数的形式参数。
形式参数的行为类似于函数内部的其他局部变量,并在进入函数创建并在退出时销毁。
调用函数,可以通过两种方式将参数传递给函数-
Sr.No. | Call Type & Description |
---|---|
1 | Call by value
This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument. |
2 | Call by reference
This method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument. |
默认情况下,C使用按值调用来传递参数。通常,这意味着函数的代码无法更改用于调用函数的参数。