什么是函数?
函数是用于完成特定任务的程序代码的“黑盒子”。
为什么使用函数?
- 函数的使用可以省去重复代码的编写(可移植性)
- 即使某种功能在程序中只是用一次,将其以函数的形式也是有必要的,因为函数是的程序更加模块化,从而有利于程序的阅读修改和完善(易维护性)
函数的一般形式:
<storage type> <data type> <function>(parameters)
{
statement
return expression;
}
storage type:描述该函数本身的链接类型或者其返回值的易变性 一般可省
data type:描述该函数的返回值类型
function:函数名 parameter:函数接受的参数列表
statement:函数主体 return:返回函数值
函数的命名:
命名规则应符合命名规范:小写字母/单词+下划线
返回值类型:
函数必须有返回值类型,如果无返回值,则在函数名之前的加void
函数的声明:
函数必须先声明,后引用,函数的定义也是函数的声明
格式:函数头+分号
参数列表:
形参和实参, 函数定义时的参数列表中为形式参数,简称形参
函数调用时的参数列表中为实际参数,简称实参
形参和实参的关系: 相互独立
数值从实参指向形参
一个函数结束的退出,会使得它的内存被释放,所以无法返回局部变量的地址
参数传递方式:
赋值传递方式:
将实参的数据拷贝给形参变量,实参和形参具有相同数据类型,但是储存空间不同
地址传递方式(引用传递):
将实参的地址传递给被调用函数,被调用函数对形参的操作相当于对实参本身的操作,将直接改变实参的值;
实参为变量的地址时,形参为同类型的指针
下面展示一个实例供参考:
#include <stdio.h>
int my_max(int x, int y); //函数声明
//在C程序中,无论函数还是变量,使用前都需要先做声明
int main(){
int a, b;
int c;
scanf("%d%d", &a, &b);
c = my_max(a, b); //函数的调用
printf("max = %d", c);
return 0;
}
//函数定义
int my_max(int x, int y){ //函数头,也叫函数的特征标
int max;
max = (x>y ? x : y);
return max;
}