Skip to content

函数

根据函数的提供方,可以区分为:

  • 库函数
  • 用户定义的函数

根据是否有形参,区分为

  • 无参函数
  • 有参函数

语法为

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);

img.png