小学生学C++编程语法知识(C++函数 :8、默认参数)

📅 2026/7/14 14:54:30 👁️ 阅读次数 📝 编程学习
小学生学C++编程语法知识(C++函数 :8、默认参数)


C++函数 第八课

《神奇的备用方案——默认参数(Default Arguments)》


本课学习目标

学完本课,同学们能够:

✅ 理解什么是默认参数

✅ 会编写带默认参数的函数

✅ 知道什么时候使用默认值

✅ 理解默认参数的调用规则

✅ 掌握默认参数的注意事项


第一幕:程序王国的新工厂

1、今天,程序王国建了一家新的工厂。

叫:

打印星星工厂。


2、汉克老师写:

void printStar(int n) { for(int i=1;i<=n;i++) cout<<"*"; cout<<endl; }

调用:

printStar(5);

输出:

*****

同学们都会。


3、可是。

国王说:

"大多数时候,我只想打印1颗星星。"

难道每次都要写:

printStar(1);

是不是有点麻烦?

有没有办法:

什么都不写,也默认打印1颗?


第二幕:聪明的工厂

1、魔法师来了。

他说:

"如果没人告诉工厂打印几颗星星。"

"那就自己决定。"


2、他写下了:

void printStar(int n = 1)

这里:

=1

就是:

默认参数。


3、意思就是:

如果没有送数字。

就自己使用1。


第三幕:第一次体验默认参数

1、看代码:

#include <iostream> using namespace std; void printStar(int n = 1) { for(int i=1;i<=n;i++) cout<<"*"; cout<<endl; } int main() { printStar(); printStar(5); printStar(8); return 0; }

运行结果:

* ***** ********

2、为什么第一句:

printStar();

还能运行?

因为:

没有参数。

程序自动用了:

n=1

第四幕:默认参数像备用方案

1、画图。

(1)调用:

printStar();

(2)流程:

有没有参数? ↓ 没有 ↓ 使用默认值1

(3)如果:

printStar(6);

(4)流程:

有没有参数? ↓ 有 ↓ 使用6 ↓ 忽略默认值

2、总结:

默认值只有在没有提供参数时才会使用。


第五幕:生活中的默认设置

1、手机闹钟。

默认:

铃声: 默认铃声

如果:

自己改。

就是:

铃声: 音乐

否则:

一直使用默认铃声。

默认参数。

就是这样。


2、打印机。

默认:

打印1份

如果:

输入:

打印5份

当然:

打印5份。

同学们还能说出几个生活中的例子呢?


第六幕:多个参数

1、看代码

void student(string name, int age=10)

(1)调用:

student("小明");

(2)输出:

小明 10

(3)再调用:

student("小红",12);

(4)输出:

小红 12

2、画图。

名字: 必须告诉 年龄: 可以不告诉

第七幕:设置多个默认参数还能继续吗?

1、例如:

void game(int level=1, int hp=100, int money=0)

(1)调用:

game();

得到:

1 100 0

(2)调用:

game(3);

得到:

3 100 0

(3)调用:

game(3,80);

得到:

3 80 0

(4)调用:

game(3,80,500);

得到:

3 80 500

2、同学们会发现:

参数是:

从左到右依次填写。


第八幕:为什么默认参数必须放后面?

1、如果是:

void test(int x=1,int y)

这样对吗?


2、答案:

❌ 错误!


3、为什么?

举例,调用:

test(5);

(1)到底:

x=5 y?

(2)还是:

x=1 y=5?

程序根本不知道。


4、所以规定:

默认参数只能放在后面。


正确:

void test(int x, int y=1)

或者:

void test(int x, int y=1, int z=2)

错误:

void test(int x=1, int y)

以及:

void test(int x=1, int y, int z=3)

5、总结口诀:

默认参数站最后,前面不能有空位。


第九幕:默认参数写在哪里?

1、汉克老师告诉大家:

如果函数只有定义。

可以这样写:

void print(int n=1) { }

2、但是如果有声明。

推荐:

写在声明里。


(1)例如:

void print(int n=1);

定义:

void print(int n) { }

(2)解释:

默认参数一般只写一次,通常写在函数声明中。

(这是一个良好的编程习惯。)


第十幕:默认参数有什么好处?

1、以前写:

printStar(1);

现在。

直接:

printStar();

更加简单。


2、以后,很多大型程序。

都会大量使用。

例如:

画图。

游戏。

机器人。


第十一幕:课堂综合案例

1、欢迎系统

#include<iostream> using namespace std; void welcome(string name="游客", int age=10) { cout<<"欢迎 "<<name<<endl; cout<<"年龄 "<<age<<endl; } int main() { welcome(); welcome("小明"); welcome("小红",12); return 0; }

2、输出:

欢迎 游客 年龄 10 欢迎 小明 年龄 10 欢迎 小红 年龄 12

3、默认参数就是:

没有提供。

自动补上。


第十二幕:课堂小游戏

1、给出函数:

void fun(int a, int b=2, int c=3)

问:

下面哪些调用是正确的?


fun(5);


fun(5,6);


fun(5,6,7);


fun();

为什么?

因为:

第一个参数。

没有默认值。

必须提供。


fun(5,,7);

不能跳过中间参数。


本课总结

今天,我们学习了函数的默认参数。请记住六句话:

  1. 默认参数就是参数的备用值。

  2. 调用函数时,如果没有提供实参,就使用默认值。

  3. 如果提供了实参,就使用实参,不使用默认值。

  4. 默认参数必须从右向左连续设置,不能把没有默认值的参数放在默认参数后面。

  5. 调用函数时,参数不能跳着填写,只能从左到右依次对应。

  6. 一般情况下,默认参数写在函数声明中,而不是声明和定义都写。


课后挑战

1、请完成下面函数:

void drawBox(int width = 5, char ch = '*');

2、要求:

drawBox(); 输出: *****

drawBox(8); 输出: ********

drawBox(6,'#'); 输出: ######

3、思考:

为什么下面的调用是错误的?

drawBox('*');

提示:第一个参数是width(整数类型),第二个参数才是ch(字符类型)。如果只写一个参数,编译器会把它当作第一个参数来匹配,因此类型不符合。


这一课的难点不是语法,而是参数匹配规则。建议始终围绕下面这张图讲解:

void fun(int a, int b = 2, int c = 3);
调用方式abc
fun(5)523
fun(5,6)563
fun(5,6,7)567

大家反复练习"参数是如何一个一个对应"的过程。