【C++基础学习笔记】C++的输入输出流及缺省参数

我要做一个好奇宝宝,带着疑问来阅读,哼~

C++如何进行输入输出?和C语言何有区别?
C++的缺省参数是什么?如何理解和掌握?

在这里插入图片描述



C++的输入&输出

婴儿降生到这个世界上时,会以自己独特的方式向这个崭新的世界打招呼。
跟新生婴儿类似,C++语言刚出来后,也算是一个新事物,作为一门新的编程语言也会有自己问候这个美好世界的独特形式!

#include<iostream>//input/output stream 输入输出流
using namespace std; //C++库中所有东西都是放到std这个命名空间中的
int main()
{
    
    
	cout << "hello world\n";//可以用\n换行
	//cout--输出流 流的理解:内容顺着 << 流入到cout(控制台显示黑框)中
	cout << "hello world" << endl;//也可以用<<endl换行 C++更推荐这个
	return 0;
}

在这里插入图片描述

说明:
1.使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含头文件以及std标准命名空间。
注意 : 早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名全间,规定C++不带.h;
某些旧的编译器(比如vc 6.0)中还支持<iostream.h>格式,后续的编译器已不支持,因此推荐使用 <iostream>+std 的方式。
2.使用C++输入输出更方便,不需增加数据格式控制,比如:整型%d,字符型%c (C++的cout输出时可以自动检测识别数据的类型)

在这里插入图片描述
这个自动识别类型是通过函数重载来实现的,函数重载会在后面详细讲解。


输入流cin的使用

#include<iostream>//input/output stream 输入输出流
using namespace std; //C++库中所有东西都是放到std这个命名空间中的
int main()
{
    
    
	int i = 1;
	double d = 2.22;
	cin >> i >> d;//表示从控制台流向i和d的空间去
	cout << i << "  " << d << endl;
	return 0;
}

在这里插入图片描述


缺省参数

缺省参数的概念

什么是缺省参数呢?

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

举例:

#include<iostream>
using namespace std;
// int a = 0 在定义形参的时候给其初始值 此时a就是缺省参数
void Func(int a = 0)
{
    
    
	cout << a << endl;
}
int main()
{
    
    
	Func();//实参为空的时候,就会使用缺省参数的值
	Func(10);//实参不为空的时候,使用实参的值
	return 0;
}

在这里插入图片描述

理解:缺省参数实际上就相当于我们生活中的备胎,当实际参数不为空的时候,就不使用缺省参数,当实际参数为空的时候才使用缺省参数。类似的道理,汽车的备胎在汽车的主轮胎正常工作的时候就一直搁在后备箱或车尾处,不使用,当主轮胎坏了,不能正常工作时,比如说轮胎爆胎或漏气了,就需要换备胎上路!
以生活中情感的备胎为例的话,如果一个女生和男朋友的关系好好的,那么这个女生的备胎男朋友1号,备胎男朋友2号…3号…都没啥用。当这个女生和男朋友关系闹僵,分手时,备胎1号闪亮登场,迅速成为女生的新任男朋友,备胎2号就变成备胎1号……最后就是

在这里插入图片描述

一些奇特的想法:为什么不叫备胎参数?或者舔狗参数呢?

我的想法:可能跟时代的局限性有关系,可能当初提出缺省参数的C++程序员没怎么坐过汽车,然后那个时代也还没有备胎、舔狗这个词,舔狗这个词是互联网新词~

//在定义形参的时候可以给其赋值
void Func(int a = 0)
{
    
    
	cout << a << endl;
}
/*当传递实参时,该缺省参数不使用,当不传递实参时,就使用缺省参数。
缺省参数类似于汽车的备胎
*/

缺省参数的分类

缺省参数分为两种

1.全缺省参数

缺省全部参数,或者说全部参数都是缺省参数。

#include<iostream>
using namespace std;
//全缺省参数
void Func1(int a = 10, int b = 20, int c = 30)
{
    
    
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
int main()
{
    
    
	Func1();
	cout << "-------------" << endl;
	Func1(1);
	cout << "-------------" << endl;
	Func1(1, 2);
	cout << "-------------" << endl;
	Func1(1, 2, 3);
	cout << "-------------" << endl;
	return 0;
}

四种调用方式
在这里插入图片描述

逗号 , 是对传的参数进行分割,不能直接用Func1(, , 3),这种是语法错误的。
调用时,如果要传参必须从左往右依次传参,不能空缺。


2.半缺省参数:

缺省部分参数,也就是一部分参数是缺省参数,另外一部分不是缺省参数

理解:这个‘半’不是指一半,对半,想想如果有3个参数,难道半缺省参数是1.5个吗?显然这个理解是不对的,这个‘半’的正确理解是相对于‘全’,‘全’是指全部,‘半’则是指部分!

#include<iostream>
using namespace std;
//半缺省参数 --- 缺省部分参数
void Func2(int a, int b = 20, int c = 30)
{
    
    
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
int main()
{
    
    
	//Func1();所有参数不传 程序错误
	//cout << "-------------" << endl;
	Func2(1);
	cout << "-------------" << endl;
	Func2(1, 2);
	cout << "-------------" << endl;
	Func2(1, 2, 3);
	cout << "-------------" << endl;
	return 0;
}

在这里插入图片描述

同时还规定了:必须从右往左连续缺省 ,也就是说不能中间间隔缺省

比如说:
在这里插入图片描述
再比如说:
在这里插入图片描述
再再比如说:
在这里插入图片描述
半缺省正确的例子:
在这里插入图片描述
再例如:
在这里插入图片描述

缺省必须从右往左依次缺省
规定:在实参传参必须是从做往右依次传参

比如说上面这个例子,如果我们这样传参:
在这里插入图片描述
又或者说这样:
在这里插入图片描述
上面两个case都是不对的!
Func2(, , 3)传参部分就相当于逗号表达式,这种逗号表达式是没有意义的。
对比:缺省的参数只能从右往左连续缺省,调用的时候只能从左往右连续传参(语法规定)

语法的学习需要半记忆半理解,有些东西就是规定死的,没法理解,需要我们直接记忆,有些东西可以理解,理解后有利于强化我们的记忆。(记忆和理解并不是矛盾的,而是相辅相成的)

猜你喜欢

转载自blog.csdn.net/QIYICat/article/details/119767637