博客总结 :
- 默认参数 : 在 声明 函数时 , 为 函数参数 定义一个默认值 ;
- 默认参数规则 : " 默认参数 " 必须 定义在 参数列表 的 末尾 ;
- 占位参数 : 只声明 参数类型 , 不声明 参数名 ;
- 占位参数规则 : 占位参数 必须传入 实参值 ;
一、占位参数
1、占位参数简介
占位参数 概念 : 在 C 语言中 , " 占位参数 " 是一种特殊的 函数参数 , 用于在 函数 定义时 预留一个 参数位置 , 只声明 参数类型 , 不声明 参数名 ;
无法访问 : 由于 占位参数 没有 参数名称 , 函数 的 函数体 中 , 无法访问 占位参数 ;
占位参数作用 : " 占位参数 " 为以后得函数留下扩展空间 ;
2、占位参数规则 - 必须为占位参数传入实参
函数 占位参数 使用 : 如果为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;
在函数中 , 定义了 2 个普通参数 , 和 1 个占位参数 :
代码语言:javascript复制// 为函数设置占位参数
void fun(int num, int num1, int) {
cout << "num = " << num << " , num1 = " << num1 << endl;
}
如果调用上述 fun 函数时 , 只传入两个普通参数 , 就会报错 :
代码语言:javascript复制 // 传入 2 个参数
fun(1, 2);
报错信息如下 :
- “fun”: 函数不接受 2 个参数
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Hello.cpp
1>Y: 02_WorkSpace 02_VSHelloWorldHelloWorldHello.cpp(13,13): error C2660: “fun”: 函数不接受 2 个参数
1>Y: 02_WorkSpace 02_VSHelloWorldHelloWorldHello.cpp(7,6): message : 参见“fun”的声明
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
错误代码示例 :
代码语言:javascript复制// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;
// 为函数设置占位参数
void fun(int num, int num1, int) {
cout << "num = " << num << " , num1 = " << num1 << endl;
}
int main() {
// 传入 2 个参数
fun(1, 2);
// 传入 3 个参数
fun(1, 2, 3);
// 控制台暂停
system("pause");
return 0;
}
二、默认参数与占位参数结合使用
1、结合用法
一旦为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;
但是 占位符 并不是我们需要的参数 , 方法体中也无法访问到 ;
平时开发时 , 一直带着一个不需要的参数 , 没有意义 ;
这里就可以将 占位参数 与 默认参数 结合使用 ,
为 函数 最后一个 占位参数 设置 默认只 2 ;
代码语言:javascript复制// 为函数设置占位参数
void fun(int num, int num1, int = 2) {
cout << "num = " << num << " , num1 = " << num1 << endl;
}
调用上述 fun 函数时 , 既可以传入 2 个参数 , 又可以传入 3 个参数 ;
- 如果传入 2 个参数 , 则最后一个 占位参数 使用默认值 2 ;
- 如果传入 3 个参数 , 则最后一个 占位参数 使用传入的值 3 ;
// 传入 2 个参数
fun(1, 2);
// 传入 3 个参数
fun(1, 2, 3);
不管 是否 传入 占位参数 , 占位参数 在函数体内 , 都不可访问 ;
2、代码示例 - 占位参数与默认参数结合用法
代码示例 :
代码语言:javascript复制// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;
// 为函数设置占位参数
void fun(int num, int num1, int = 2) {
cout << "num = " << num << " , num1 = " << num1 << endl;
}
int main() {
// 传入 2 个参数
fun(1, 2);
// 传入 3 个参数
fun(1, 2, 3);
// 控制台暂停
system("pause");
return 0;
}
执行结果 :
代码语言:javascript复制num = 1 , num1 = 2
num = 1 , num1 = 2
请按任意键继续. . .