因为前段时间学习matlab,准备建模比赛事情,所以耽误了c++primer的学习时间,一直拖到今天才更新笔记,学习了c++,感觉学习matlab很轻松,但比赛还是没有达到预期结果,尽力了,接下来会尽快结束c++Primer的学习!冲!
(笔记为本人使用c++primer plus复习c++内容所书写的,不会很具体,如有不对,希望大家指正!!!)
一个for循环主要包括四个部分
如果循环体只有一句,可以不用大括号,缩进即可,两句及其以上,需要使用大括号,如果只缩进,系统只将第一句代码认为作循环体!
每个c++表达式都有值:
27 + 11
//表达式值为38
x = 11;
//表达式值为11
a = ( b = 1 ) + 2;
上述代码,a的值为3,虽然没问题,但不支持这样写,基于此,也支持这样:
a = b = c = 1;
同时,可以将变量声明在for中,如下:
for ( int i = 0;i++;i<5)
但这样变量i只存在于循环中,循环结束,变量i也随之消失。
也可以利用for循环来访问字符串的每个字符,看作数组即可;
i++ ; i-- ; ++i ; --i; 区分这四个的意思;
还有一些组合赋值运算符: += ; -= ; /= ; %= ;
这是以前没注意的一个点,如果两个表达式完成相同的任务,可以将两个表达式利用逗号运算符放在一个表达式的地方,但要注意和普通的逗号区分!
int i.j; //普通的逗号,分开两个变量!
for (i = 5, j = 1; j < i; j++,i++ )
//上述中使用两次逗号运算符
i = 20, j = i * 2;
逗号表达式的值是第二部分的值,所以上述表达式的值为40
data = 17,50;
逗号运算符的优先级最低,所以上述表达式将17赋给data,而最后的50没意义。
如果一个数组存储一个字符串,要和规定的字符串进行比较,不能直接使用 数组名==字符串,要知道,c++中数组名代表数组第一个元素的地址,如果要比较,需要用到其他函数,比如strcmp;如果利用string定义字符串,则可以直接比较。
for和while循环几乎是一致的,两者可以转换,只存在三个差别:
通常知道循环次数,初始值等条件时,使用for循环,不知道循环执行次数时,使用while循环
c++还提供让程序等待一段时间,例如,给读者充足时间阅读某条信息时。
有两种方法,第一是使用预处理器
#define BYTE char
第二是使用关键字typedef来创建别名
typedef char byte;
但两者存在一点不同,例如,如果声明char类型的指针别名,可以这样:
typedef char * byte_pointer;
如果要声明一系列的变量时,不能使用预处理器,如下:
#define FLOAT_POINTER float *
FLOAT_POINTER pa,pb;
//预处理器将转换为这样
float * pa,pb;
此时,pa是一个float *变量,但pb只是一个float变量
do whlie循环与之前循环不同是,先执行循环体,在判断测试条件,也就是至少执行一次循环体。而之前说的for,while都是先判断测试条件,如果不通过,则一次循环体也不会执行
循环读取来自键盘输入的文本,要知道何时停止读取,因此要选择一个特殊字符——哨兵字符,这一点与python是相同的,就不做过多说明了
在读取输入内容时,cin, cin.get, cin.get(ch)的区别,这一点之前总结过,不做太多说明了。
不同操作系统,都会有一个强制终止循环的形式,只是各不相同而已。
这一章最后的二维数组,也是最基本的概念,没什么特别的。