函数
根据函数的提供方,可以区分为:
- 库函数
- 用户定义的函数
根据是否有形参,区分为
- 无参函数
- 有参函数
语法为
c
返回值类型 函数名([类型0 参数0, 类型1 参数1, 类型2 参数2,..., 类型n 参数n]){
语句;
...
return 返回值类型变量
}
如果没有返回值,则可以写成
c
void 函数名([类型0 参数0, 类型1 参数1, 类型2 参数2,..., 类型n 参数n]){
}
无参函数
语法为
c
返回值类型 函数名(){
语句;
...
return 返回值类型变量
}
如果没有返回值,则可以写成
c
void 函数名(){
}
有参函数
语法为
c
返回值类型 函数名(类型0 参数0, 类型1 参数1, 类型2 参数2,..., 类型n 参数n){
语句;
...
return 返回值类型变量
}
如果没有返回值,则可以写成
c
void 函数名(类型0 参数0, 类型1 参数1, 类型2 参数2,..., 类型n 参数n){
}
- 形参:出现在函数的定义中,只能在整个函数内部使用
- 实参:出现在主调函数中,只能在函数外部使用
注意⚠️
传递到函数中的形参是引用的副本
,这也是为什么不建议在函数中传递结构体的原因,因为直接传递结构体会重新复制一份副本,导致代码执行效率低。
函数的声明和函数原型
使用场景:声明在主函数之前,实现在主函数之后
c
#include <stdio.h>
int add(int a, int b);
int main() {
printf("%d", add(1, 2));
return 0;
}
int add(int a, int b) {
return a + b;
}
语法1:
c
返回值类型 函数名(类型0 参数0, 类型1 参数1, 类型2 参数2,..., 类型n 参数n);
语法2:
c
返回值类型 函数名(类型0, 参数1, 参数2,..., 参数n);