最近两天打开本科学校的C++教材,快速回顾了一下C++方面的内容。虽然书本内容比较基础,但是还是有些知识点值得自己强化记忆。分几篇文章,加上自己的理解记录如下。
先回顾面向过程的部分。
C++数据类型
1、数据类型修饰符:
1.1 long不仅可以修饰int,还可以修饰double;而short只能修饰int;
1.2 "只有修饰符"的数据类型都是"修饰符 int"的简写,比如unsigned long是unsigned long int的简写。
2、整型常量:八进制数以0开头,十六进制数以0x或者0X开头。
3、浮点型常量:1.23*10^4在C++中可以表示为1.23E4或者1.23e4。
4、转义字符:
4.1 若转义字符后边跟的是一个整型常量,则必须是一个以0为前缀的八进制数(注意前缀0可以省略),或者以x为前缀的十六进制数(注意是x而不是0x);
4.2 若转义字符后面跟有字符时,其字符必须小写,大写只能表示其自身。如‘\E‘认为就是‘E‘。
5、变量:
5.1 变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。
5.2 C++要求变量作强制定义的目的:
5.2.1 凡未被事先定义的,不作为变量名,保证程序中变量名使用的正确;
5.2.2 每个变量被指定为一个确定类型,在编译时就能为其分配相应的存储单元;
5.2.3 在编译时就能根据变量类型检查其进行的运算是否合法。(如:a, b为实型变量,则不允许进行求余运算)
5.3 #define定义的符号常量和const定义的常变量的区别:
符号常量只是用一个符号代替一个字符序列,在编译预处理时把所有符号常量替换为指定的字符序列,它没有类型,在内存中并不存在以符号常量命名的存储单元;
而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元。
5.4 C++中一般使用常变量。因为使用const语句定义常变量带有数据类型,便于系统进行类型检查,同时它还具有计算初值表达式的功能。
6、在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
6.1 如a || b || c,只要a为true就不必判断b和c;
6.2 如int a = 1, b = 2, c = 3, d = 4, m =5, n =6; bool x; x = (m = a > b) && (n = c > d); 执行完之后n的值不是0,而仍然是6。
7、逗号运算符:
7.1 int a; (a = 3 * 5, a * 4), a + 5; 执行完之后,a为15,第二条语句整个表达式的值为20;
7.2 逗号运算符是所有运算符中级别最低的。
程序控制语句
1、if...else...语句中,else总是与离它最近的上一个if配对。
2、switch...case...语句中,case后跟的是常量表达式(不能是普通变量),常量表达式的值必须是整型、字符型或枚举类型。
3、for(statment1; statement2; statement3),如果for循环内有执行到continue语句,则跳到执行statement3,并进行下一轮循环。
数组和结构体
1、字符串处理:
1.1 gets(str)的作用是从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起始地址。(本节下述str开头的均为char *类型)
拓展:cin.get(str, size),每次读取一整行,并把enter键生成的换行符留在输入队列,通常这样组合使用:cin.get(str, size).get();
cin.getline(str, size),每次读取一整行,并把enter键生成的换行符抛弃;用法与gets(str)几乎一样,只是多了一个size参数;
getline(cin, string),每次读取一整行,并且为string类型;
getchar(ch),接受一个字符。
1.2 puts(str)的作用是将一个字符串(以‘\0‘结束的字符序列)输出到终端。
1.3 strcat(strDest, strSource)是将字符串strSource连接到字符串strDest后面,返回为字符数组strDest的地址。
1.4 strcpy(strDest, strSource)是将字符串strSource复制到字符数组strDest中去,返回为字符数组strDest的地址。
1.5 strcmp(str1, str2)比较str1和str2,若str1 == str2,返回0;若str1 > str2,返回一个正整数;若str1 < str2,返回一个负整数。
1.6 strlen(str)返回字符串的实际长度,不包括 ‘\0‘ 在内。
cin.get()
每次读取一整行并把由
Enter
键生成的换行符留在输入队列中