笔记会持续更新,有错误的地方欢迎指正,谢谢!
第一章:开始
语言常识
一、C++进一步补充其基本特征的两种方法:
1.允许程序员自定义数据类型;
2.将有用的功能封装成库函数。
二、有两类语言:
1.动态数据类型语言:在程序运行时检查数据类型,比如:python;
2.静态数据类型语言:在编译时检查数据类型,比如:C++。
一个简单的C++程序
int main()
{
return 0;
}
结构为:返回类型,函数名,形参列表,函数体。
返回值0表示成功,非0为系统定义的错误类型。比如:返回值-1表示失败。
IO
1.C++语言未定义任何IO语句,却包含了一个标准库来提供IO机制。
2.iostream库包括输入流(标准输入:cin)和输出流(标准输出:cout,输出警告和错误消息、不缓冲:cerr,输出程序运行时的一般性的信息、要缓冲:clog)。
补充内容:
-所谓不带缓冲的I/O,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统调用将数据写入到内核提供的块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。(单缓冲)
-而带缓冲的I/O,进程提供了一个流缓冲,先把数据写入流缓冲区中,当流缓冲区满了,或刷新流缓冲,这时候才会把数据一次送往内核提供的块缓冲,再经块缓冲写入磁盘。(双重缓冲)
-总结:因此所谓的不带缓冲的I/O(未打包就传了)是指进程不提供缓冲功能,但内核还是提供缓冲的。并且,带缓冲的I/O(已提前打好包再传)在往磁盘写入相同的数据量时,会比不带缓冲的I/O调用系统调用的次数要少。
3.流:随着时间的推移,字符是顺序生成或消耗的。
4.endl的作用是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。调试时的打印应保证一直刷新流。
控制流
1.while语句
2.for语句
3.if语句
4.读取数量不定的输入数据
应用问题:如何求未知个数的数的和?
#include <iostream>
int main()
{
int sum = 0, value = 0;
while(std::cin >> value)
{
sum += value;
}
std::cout << "输入数的和为:" << sum << std::endl;
return 0;
}
while的判断条件:流状态有效则cin为真,遇文字流结尾(EOF)或无效输入为假。
类简介
类类型(class type):自定义的(在使用上像内置类型的)数据类型,为了和内置类型区别开才这样命名。
点(.)运算符只能用于类类型的对象;
::运算符为作用域运算符;
()运算符跟随在函数名之后,作用是调用函数。