c++兼容c的一切语法,下文会有一些c和c++的对比。
头文件
观察上图,c++的基础头文件为<iostream>, 有了iostream才能进行输入和输出的操作。。
讲得严谨一点就是,iostream是 Input Output Stream ,翻译过来就是输入输出流。它定义了标准的输入输出对象。。
平时写c++代码的时候一定要写上这个头文件
#include<iostream>
输入和输出
在c中输入和输出较为麻烦,
int a = 0;
scanf("%d", &a);
printf("%d\n", a);
如上图,a是int类型,输入和输出都需要%d这个格式说明符,
但是c++不需要。
int a = 0;
std::cin >> a;
std::cout << a << std::endl;
输入就用std::cin,后面紧跟>>,加上变量名
输出用std::cout, 后面紧跟<<,加上变量名;
endl是换行符,意为end line.
std::cin和std::cout可以连续输入和输出多组数据。
(std::是什么下文会有解释)
命名空间namespace
顾名思义,命名空间就是可以自己命名然后拿来使用的空间。
命名空间可以有好多个,不同的命名空间里可以使用同名变量。
命名空间的存在解决了命名冲突的问题。
下面介绍命名空间的语法,举例让大家理解一下。
namespace study
{
int a = 10;
}
语法就是
namesapce + 名字 +{ },
其中名字任你取,只要是英文字母就行,可以加上这个符号“_”;
{ }花括号里面写内容。
观察下面代码,看如何访问命名空间中的东西,以及命名空间是如何解决变量同名问题的。
访问命名空间中的a,语法是名字::变量,如上面代码的study::a.
访问全局变量中的a,语法是::变量,如上面代码的::a.
访问main函数中的a,就是正常打印就好。
C++标准库都放在⼀个叫std(standard)的命名空间中。
可以在写代码时添加 using namespace std 这句话,方便我们平时写代码。
如std::cin就可以写成cin,std::cout就可以写成cout,std::endl就可以写成endl,
我们自己的命名空间也可以使用 using namespace + 命名空间的名字
#include<iostream>
using namespace std;
//using namespace study;//这句话放在这里会报错
namespace study
{
int a = 10;
}
using namespace study;//这句话必须放在命名空间之后,不然会报错
int main()
{
cout << a << endl;//此时的a是命名空间的a
return 0;
}
但是需要小心的是,当变量重名时,系统会优先打印main函数中的变量
缺省参数
举个例子理解一下
全缺省参数
看上图的function1函数,形参有3个,分别为a, b, c,都给它们赋值,此时a、b、c都有了初始值,这就叫全缺省参数
在main函数调用function1的时候,可以什么参数都不传,也可以传1/2/3个参数。传的参数不够时,剩下的参数就会用初始值,如:
只有a有传参,b,c都用初始值。
半缺省参数
如function3就是半缺省参数,如上图,只有a没有初始值,因此调用function3时,至少要赋一个值,不然会报错。
下面是正确示例
错误的缺省参数
function2是错误示例,因为形参的赋值顺序不对。
c++规定缺省的赋值必须从右到左,但是在function2中,却从左到右,先给a赋值,所以会报错。