6.4 函数的声明

发布时间:

1. 基本格式

函数声明的核心是 “返回值类型 + 函数名 + 参数列表 + 分号”,格式如下:

// 格式:返回值类型 函数名(参数类型列表);
返回值类型 函数名(参数类型1, 参数类型2, ...);
int add(int a, int b);

// 也可以写参数名(可选,编译器忽略,但可读性更好)
返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...);
int add(int, int);

js
#include<iostream>
using namespace std;

// 函数声明(只告诉编译器函数的“接口”)
int add(int a, int b); // 参数名a/b可选,
int add(int, int);//也可以

int main() {
    // 调用函数(此时编译器通过声明知道add的用法,能通过编译)
    cout << add(3, 5) << endl; // 输出8
    return 0;
}

// 函数定义(给出函数的具体实现)
int add(int a, int b) {
    return a + b;
}
   

2. 声明的位置:必须在调用之前

js
#include<iostream>
using namespace std;

// 函数声明(只告诉编译器函数的“接口”)
int add(int a, int b); // 参数名a/b可选,写成int add(int, int);也可以

int main() {
    // 调用函数(此时编译器通过声明知道add的用法,能通过编译)
    cout << add(3, 5) << endl; // 输出8
    return 0;
}

// 函数定义(给出函数的具体实现)
int add(int a, int b) {
    return a + b;
}
   

3. 声明和定义的 “匹配规则”

函数声明必须和定义严格匹配,否则编译 / 链接报错,匹配维度包括:

返回值类型一致; 函数名一致; 参数列表一致(参数类型、个数、顺序都要一致,参数名可不同)。

错误样例

js
// 声明:参数是int, int
int add(int a, int b); 

// 定义:参数是int, double(类型不匹配)→ 链接报错
int add(int a, double b) {
    return a + b;
}