C++ Primer 知识点总结

第一章

1.1 编写简单的C++程序

每个C++程序都包含一个或多个函数,而且必须有一个命名为main。main函数是唯一被操作系统显示调用的函数。
返回0说明程序成功执行完毕。
定义函数必须指定4个元素: 返回类型,函数名,形参表和函数体。
C++中多数语句以分号作为结束标记。
IDE 集成开发环境 Integrated Development Environment
程序员文件称为源文件。源文件的名字由文件名和文件后缀两部分。

1.1 输入输出

C++并没有直接定义进行输入或输出(IO)的语句,这种功能是有标准库提供的。
经常使用的是处理格式化输入和输出的 iostream 库。
iostream 库的基础是两种命名为istream 和 ostream的类型,分别表示输入流和输出流。
流是指要从某种IO设备上读入或写出的字符序列。
术语“流”试图说明字符是随着时间顺序生成或消耗的。
endl是一个特殊值,称为操纵符(manipulator),将他写入输出流时,具有输出换行的效果。
并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可以立即看到写入到流中的输出。
忘记刷新可能会造成输出停留在缓冲区。

使用命名空间,程序员可以避免由于无意中使用了与库中所定义的名字相同的名字而引致冲突。
所以当使用标准库中的名字时,必须显式地表达出使用的是某个命名空间下的名字。

空格符不允许出现在预处理指示中。

1.3 注释

单行注释  //
成对注释 /*  */
任何允许有制表符、空格或换行符的地方都允许放注释对。
注释对不可以嵌套。

1.4 控制结构 

C++中的语句是顺序执行的。
+=  复合复制操作符。
++val 前自增操作符

while 语句

while (condition) while_body_statement;
while 通过测试condition 和执行相关的while_body_statement来重复执行,直到condition为假。

for 语句

for语句提供迭代执行的控制语句,通常用于步进遍历数据结构或对一个计算重复固定次数。
for ( 初始化语句 ; 条件  ; 表达式 ) for_body_statement ;
仅当for语句体执行完后才执行表达式。。执行完表达式后,for语句重新测试条件。

if 语句

if语句支持条件执行。

1.5 类的简介

C++最基本的工具: 类。
C++中通过定义类来定义自己的数据结构。
C++设计的主要焦点就是使所定义的类 类型(class type)的行为可以像内置类型一样自然。

标准库的头文件用尖括号 <> 括起来, 非标准库的头文件用双引号“ ” 括起来。
成员函数(member function)是由类定义的函数,有时称为类方法(method)。
成员函数只定义一次,但被视为每个对象的成员。
调用成员函数时,通过点操作符(.)来指定函数要操作的对象。
与其他大多数操作符不同,点操作符(“.”)的右操作数不是对象或值,而是成员函数的名字。
通常使用成员函数作为点操作符的右操作数来调用函数。执行成员函数和执行其他函数相似:要调用函数,可将 调用操作符(“ ()”)放在函数名之后。
调用操作符 是一对圆括号。

小结:
block 块  :花括号(curly brace)括起来的语句序列;
buffer 缓冲区: 一段用来存放数据的存储区域。IO设备经常把输入或输出存储到缓冲区,并独立于程序自动对缓冲区进行读写。输出缓冲区通常必须显示刷新以强制输出缓冲区内容。
data structure 数据结构: 数据及数据上操作的逻辑组合。
expression 表达式: 最小的计算单元。
function 函数: 有名字的计算单元。
statement 语句: C++中最小的独立单元。一般以分号结束。
string literal 字符串字面值 : 以双引号括起来的字符序列。
:: operator  作用域操作符: 用于在命名空间中访问名字。


第二章 变量和基本类型

类型是所有程序的基础。
类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。
也就是说类型确定了数据和操作在程序中的意义。
C++中对类型的支持是非常广泛的:C++ 语言本身定义了一组基本类型和修改已有类型的方法,还提供了一组特征用于自定义类型。

2.1 基本内置类型

算术类型: 整数,浮点数,单个字符和布尔值;
特殊类型:void。
一般用 表示该类型的二进制位数(bit)来表示其存储空间。


整型

表示整数,字符和布尔值的算术类型合称为整型(integral type)。

计算机以 位序列 存储数据,每一位存储0或1.
在 位(bit) 这一级上,存储器是没有结构和意义的;让存储具有结构的最基本的方法使用块(chunk)处理存储。块的位数一般是2的幂。

一般 short类型为半个机器长,int类型为一个机器长,而long类型为一个或两个机器长,在32位机器中int和long字长相同。
除了bool类型外,整型可以是带符号的(signed)和无符号的(unsigned)。 
整型 int、short和long都默认带符号型。

无符号型中,所有的位都表示数值。 8位的可以取值 0~255;
带符号型中主要看编译器如何决定。一般常用的策略是用其中一个位作为符号位。这样8位的就可以取值 -128~127.

整型赋值溢出:
 --------unsigned 编译器必须调整越界值使其满足要求,会取模后取所得值。
            如 unsigned char 取值 0~255, 336 实际赋值 336%256 = 80;
            而 将负数赋值给unsigned  永远是超出范围,有些语言定义为非法,但C++ 中合法 ,例如 -1 赋给 8位的char,那么结果是 -1%256 = 255.

---------signed 由编译器实际决定。一般与unsigned 一样,取模后的值,但不一定全都是这样。


浮点型

单精度浮点数: float  一般32  bit, 只能保证6位有效数字
双精度浮点数:double 一般 64 bit ,至少保证10位有效数字
扩展精度浮点数: long double 一般96 或 128bit

2.2 字面值常量 literal constant

像 42 这样的值,在程序中被当做字面值常量。字面值指的是只能用它的值来称呼它,常量指的是它的值不能修改。
只有内置类型存在字面值,没有类类型的字面值,也没有任何标准库类型的字面值。

字面值整数常量

可以有3中进制来定义, 十进制,八进制和十六进制。
20      // decimal  十进制
024   //octal  八进制,以0(零)开头
0x14 //hexadecimal  十六进制, 以0x(零 x)开头
默认为int 或 long类型,一般是int,看数值决定。
显示定义为long 使用 L: 20L 。 不使用小写的l,容易与1混淆。
类似的,显示定义为unsigned 使用 u/U。 20u   20UL   8Lu

浮点数字面值规则

通常用十进制或者科学计数法(用E / e)来表示浮点字面值常量。默认为double型。 用F/f 表示单精度, 用L 表示扩展精度。
3.14159F           001f          12.345L               0.
3.14159E0f      1E-3F         1.2345E1L         0e0

布尔字面值和字符字面值

布尔型: true  、 false
可打印的字符型字面值通常用一对单引号来定义:  ‘a’, ‘2’,‘,’ ,‘ ’。 最后一个表示空格

非打印字符的转义序列

有些字符是不可以打印的,实际上就是不可显示的字符,例如退格或者控制符,以及一些在语言中有特殊意义的字符,例如单引号,双引号,反斜线。
不可打印字符和特殊字符用 转义字符来书写,转义字符以反斜线符号开始
 












发布了34 篇原创文章 · 获赞 25 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章