函数的声明
函数的声明
掌握函数(不包含匿名函数、类的括号运算符重载)的声明。
函数声明(原型)告诉编译器:有这么一个函数,返回值类型、名字、参数列表是什么,具体实现在别处。声明末尾要有分号;定义则带函数体。常见写法是把声明放前面,main 里调用,实现在后面。
四级卷面常考「声明与定义的区别」「只有声明能否链接成功」「声明与定义参数列表不一致会怎样」。记住:声明可以出现多次,定义只能有一处(inline 等特殊情况除外,四级一般不深考)。
int gcd(int a, int b); // 声明
int main() { cout << gcd(12, 8); }
int gcd(int a, int b) { /* 定义 */ return a ? gcd(b%a, a) : b; }
若题目给出分文件结构,找「谁只写了分号、谁有大括号」,就能判断是声明还是定义。
一个函数必须在调用之前既声明又定义。
关于下述代码,说法错误的是( )。
int multiply(int x, int y);
int main() {
int a = 4;
int b = 5;
int result = multiply(a, b);
std::cout << "The result is: " << result << std::endl;
return 0;
}
int multiply(int x, int y) {
return x * y;
}
在 C++ 中,函数的返回类型可以省略,默认为 int。
关于以下 C++ 代码,说法正确的是( )。
int main() {
greet();
return 0;
}
void greet() {
cout << "Hello!" << endl;
}
下面 C++ 代码正确声明了一个返回 int 类型、接受两个 int 参数的函数。
int add(int, int);
下面这段代码会输出( )。
int add(int a, int b = 1); // 函数声明
int main() {
cout << add(2) << " " << add(2, 3);
return 0;
}
int add(int a, int b) { // 函数定义
return a + b;
}
下面代码可以正常编译并输出 10。
#include <iostream>
using namespace std;
int calculate(int x, int y = 10);
int main() {
cout << calculate(5); // 调用1
return 0;
}
int calculate(int x, int y) {
return x * y;
}
int calculate(int x) { // 重载函数
return x * 2;
}
下面程序可以正常编译并输出 10。
int calc(int x, int y = 10);
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }
int main() {
cout << calc(5);
}