作者:余小小
日期:2021-10-02
-
每个 C 程序都至少有一个函数,即主函数 main()
-
函数声明告诉编译器函数的名称、返回类型和参数
-
函数定义提供了函数的实际主体(实现函数)
-
函数还有很多叫法,比如方法、子例程或程序。函数就是功能
-
函数名字:小驼峰+标识符
-
返回类型:基本类型或者自定义类型
-
括号里的东西:参数,可以不写,则是没有参数
-
参数(形参):和定义变量一样,数据类型 +参数名
-
代码区域:要执行的代码
定义函数
返回类型 函数名字( 参数 )
{
body of the function
}
-
返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
-
函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
-
参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
-
函数主体:函数主体包含一组定义函数执行任务的语句。
/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2)
{
/* 局部变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
函数声明
-
函数声明会告诉编译器函数名称及如何调用函数。
-
函数的实际主体可以单独定义。
函数声明语法:
返回类型 函数名字( 参数 );
声明一个函数:
int max(int num1, int num2);
参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:
int max(int, int);
调用函数
-
当程序调用函数时,程序控制权会转移给被调用的函数。
-
调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。(根据返回值类型来返回)
#include <stdio.h>
/* 函数声明 */
int max(int num1, int num2);
int main ()
{
/* 局部变量定义 */
int a = 100;
int b = 200;
int ret;
/* 调用函数来获取最大值 */
ret = max(a, b);
printf( "Max value is : %d\n", ret );
return 0;
}
/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2)
{
/* 局部变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
实参和形参
实参
也就是实际参数。简单来说,比如你要调用一个带有两个参的函数,你当然需要传入两个值,这两个个值可能就是你当前定义的变量或者常量值,直接将你当前定义的这两个值放在你调用函数的括号里,那么这个括号里的参数,就是实参;比如我现在在调用带参函数:
int a = 1, b = 2 ;
max(a,b);
这个括号里 a 和b就是实参
形参
也就会形式参数,也就是走个形式。形参和局部变量一样,在调用函数的时候创建,执行函数结束后销毁。在定义函数的时候那个括号里的参数,就叫形参
看代码,这里定义带有两个参数的函数max(a,b)
int max(a,b){return (a+b);}
这个return的值就是a+b的值,也就计算传入两个数的和。然后调用这个函数的时候会返回这个和的结果。
函数参数
-
使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数(写在函数括号中的变量)
-
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。(java中有垃圾回收器来处理)
有两种向函数传递参数的方式:
调用类型 | 描述 |
---|---|
该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。 | |
通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。 |
默认C 使用传值调用来传递参数。一般来说,这意味着函数内的代码
暂无评论内容