0.前言
这系列博客可能会长期写下去,目的就是为了学习C++,这系列博客还是像以前的博客那样,算是我的学习记录,可能有错,希望大家参考的时候也带着批判性思维。若发现错误,也请各位大佬斧正。
对了,本人有C的基础,所以有些地方,会记录的不详细。
这系列参考书籍《C++Primer 第五版》
1.编写一个简易的C++程序
int main()
{
return 0;
}
一个函数的定义包含四部分:返回类型
、函数名
、可空的形参列表
和函数体
。
1.1编译、运行程序
略过,毕竟不是重点,难不成我还写一个编译原理?再教教怎么使用工具并运行它?
2.初识输入输出
C++并没有定义任何输入输出语句,而是提供了一个全面的标准库
来提供IO机制。
其中最常用的就是iostream
库,而该库内包含两个基础类型istream
和ostream
表示输入输出流。
对于“流”所表达的含义是:随着时间的推移,字符是顺序产生和消耗的
标准库定义了4个IO对象:
函数名 | 名称 | 作用 | 流类型 |
---|---|---|---|
cin | 标准输入 | 读入 | 输入流 |
cout | 标准输出 | 输出 | 输出流 |
cerro | 标准错误 | 输出警告和错误 | 输出流 |
clog | - | 程序运行时的一般信息 | 输出流 |
2.1向流读取与写入数据
这是一段代码:
#include <iostream>
int main()
{
int a;
std::cin >> a;
std::cout << "Hello World! With" << a <<std::endl;
return 0;
}
大家会发现:程序使用了std::cin
和std::cout
,这个std::
是指出,cin
cout
是定义在std的命名空间里,这样做是为了避免不经意间的名字定义冲突。
<<
这是一个输出运算符,它接收两个运算对象,左侧必须是一个ostream
对象,右侧的运算对象是要打印的值。
>>
是输入运算符,同理,它接收一个istream
作为左侧运算对象,接收一个对象作为右侧运算对象。它从给定的istream
中读入数据,并保存至给定对象中。
>>
<<
这两个运算符都是返回左侧的左侧的运算对象作为结果。
endl
是一个被称为操作符的特殊值,写入endl
的效果是结束当行(俗称换行),并将设备关联的缓冲区的内容刷新的设备中。相当于把内存中的东西真正地写入到输出流中。
3.注释简介
C++中有两种注释,都继承于C语言: //和/* */
注释范围内的内容会被编译器忽略,且注释内可包含任何文本内容
单行注释:以双斜线(//)开始,到第一个换行符结束。
多行注释:以/*开始 */结束,里面任何内容被忽略,包括换行符。
这样的特性导致了注释界定符不能嵌套,就像图示这样:
4.控制流
语句一般都是顺序执行的,而程序设计语言为我们提供了多种不同的控制流语句
, 允许我们写出更复杂的执行路径
4.1 while语句
while
语句是反复执行一段代码,知道给定地条件为假。
其形式为
while(条件)
表达式
而其中所谓的条件就是一个产生真或假的结果表达式
4.2 for语句
for
语句包含两部分,循环头和循环体。而循环头分三部分:初始化语句
、循环条件
、表达式
就像这样:
for(初始化语句; 循环条件; 表达式)
循环体
如果再改一下,我们可以把它看为一个while
语句:
初始化语句
while(循环条件){
循环体
表达式
}
4.3 读取数量不定的输入数据
代码:
#include <iostream>
int main()
{
int a;
while (std::cin >> a)
{
std::cout << a << std::endl;
}
return 0;
}
当我们以一个istream
对象作为条件的时候,其效果就是检测流的状态。如果流是有效的,就为真;当其遇到文件结束符 或遇到一个无效输入时,其状态会变为无效,条件即变为假。
在Win系统中,文件结束符是Ctrl+Z
,而Unix系统(就是你用的mac或者linux)中,文件结束符是Ctrl+D
,就像这样:
当我输入123 456 789时,控制台并没有跳出程序,而是输出了123 456 789 后继续等待我的输入,直到我输入了45464644Ctrl+Z时,程序输出了我的输入,并跳出了循环。
4.4 if语句
阿巴阿巴没啥说的
if (条件)
{表达式1}
else
{表达式2}
如果条件为真,就运行表达式1,否则就运行表达式2。
现在先这样,后面会详说,第一节课就是体验体验。
5.类简介
这里就不过多演示了,毕竟类
是C++的一大特性。 类
就是一个数据结构,它定义了一个类型,以及与其关联的一组操作。
类也可以像其他类型一样,进行 + - * / 或者 > < == 等操作。