1 -C++源代码风格 1 每行一条语句 2 每个函数的两个花括号各占一行 3 函数中的语句都对于花括号进行缩进 4 与函数名称相关的圆括号周围没有空白(空行将声明语句与程序的其他部分分开,或在变量前声明,C++的做法是尽可能在首次使用变量前声明) 第二章 开始学习 C++ 变量名的约定:类型_名称 或者是 类型(int)名称(Akjl)C 语言输入输出是 printf,scanf,他们都包含在头文件 stdio.h 中操作符重载:通过重载,同意个操作符将有不同的含义操作符表示地址操作符又表示 AND 按位操作符,又如指针*Long | coutMain()//可以将两个关键字分开在两行写 | name来访问结构成员!记住:结构变量名来访问成员时用句点符(.),当用指向结构变量名的指针来访问成员时要用->操作符第五章 循环和关系表达式第五章的主要内容:①for 循环 ②表达式和语句 ③递增和递减操作符:++和-- ④组合赋值操作符 ⑤复合语句(语句块) ⑥都好操作富 ⑦关系操作符 ⑧while 循环 ⑨typedef 工具 ⑩get() 字符输入方法 ⑾文件尾条件 ⑿嵌套循环和二维数组For 循环:其中的判断表达式都能转换成 bool 型,如判断表达式为 I,若 i=1 为真,若 i=0 为假,而所有的表达式也都可以转化成 bool 类型的 true 或者 false 类型;C++表达式都是值与操作符的组合,每个 C++表达式都有值!!Maid=(cooks=4)+3;//在 c++中可以这样做,但是不提倡这样做,这样只是为了让 x=y=z=0;这样的语句存在Long a=100;cout1;//a>1 这个表达式为真成数值 1,他将显示一个数字 1!要成为表达式就必须能确定其值!cout.setf(ios.base::boolalpha);//将输出结果转化成 bool 类型,同时用 true 和 false 表示,而不是 1 和 0cout>word;int kk=word.size();C++//表示先使用当前的,使用完后就加一。
C//表示先加一后,在使用其值!! 组合赋值操作符:有+= -= *= /= %=复合语句(也叫语句块):单独的一对大括号也是一个语句块 在一个语句块内定义的变量到语句块外面后就释放了逗号操作符:逗号操作符的优先级是最低的如:i=20,j=i*2;//两个语句是有先后顺序,翻过来是不行的For(long i=0,j=10;i = == !=;//for 第二个关系表达式如果为赋值表达式则其表达式的值是 TRUEC-风格字符串的比较:我们要用到 cstring 类库中 strcmp()可以比较两个字符串的大小,是否相等如果两个字符串相同则该函数返回的值为零;如果第一个字符串按字母顺序排在第二个字符串之前,则返回一个负数;如果第一个字符串按字母顺序排在第二个字符之后,则返回一个正数Char aa[20];if(aa==”nihao”)//错误,比较两个字符串地址String 类字符串的比较:String 类的比较字符串方法是比较简单的!!String str1;str1 = “nihao”;//这里比较的是两个字符串,并非比较的是内存地址!!5.3while 循环:while(1) ;{…}//分号是一个结束语句,while 是没有循环体,是一个死循环,编译时什么也不动用 whlie 循环来计时:在 ctime 头文件中 clock()可以解决计时问题。
Ctime 提供了以个符号常量 CLOCKS_PER_SEC,该常量等于每秒钟包含的系统时间单位数将系统时间除以这个值将得到秒数,将秒数除以这个变量可以得到以系统时间为单位的时间Clock_t 是 clock()函数返回类型的别名, 我们可以将变量声明为 clock_t 类型,他表示 long、unsignde int 或系统其他类型类型别名:c 风格的预处理命令#define 和 c++的 typedef 都可以来创建类型别名!#define ch char;//在编译时所有的 ch 都被替换成 char*,这样 ch kk;中的 kk 就是以个 char 型指针!!这里用 char 代替ch- 7 -Typedef char* ch;//我们也可以这样,有时我们只能这样,这是 C++风格 这里我们用 char*来代替 chDo whlie 循环:这种循环不如前两种,但他有他的特别用法,如让用户输入一 个数后在做判断,这个循环至少循环一次!5.5 循环文本输入cin>>ch;// 使用原始的输入能将键盘输入的下一个字符输入到变量中,但他能将空格、换行符和制表符忽略Cin.get(ch);//读取下一个字符,不管该字符是什么,并将其存储在 ch 中。
其通过返回转换为 FALSE 的 bool 值确定已达到 EOFCh=Cin.get();//成员函数调用 cin.get()返回下一个输入字符,包括空格、换行符合制表符通过返回 EOF 值来指出已达到 EOFEOF 检测文件尾:EOF 是在文件 iostream 中定义的5.6 嵌套循环和二维数组Long kk[2][3]= //我们可以将其看成包含 2 个元素的数组,而没个元素有包含了 3 个 long 型整数的数组{{13,12,11},//初始化时每一行内用逗号,没一行之间用逗号,结尾用分号,同一纬数组一样要将其在最后加分号!!{15,16,18}};//我们可以把他们写在一行内,但作为一种风格,分行写成表格的形式,清晰也便于查找Char* kk[2]={“nihao”,//定义一个指针数组,并进行初始化!初始化和普通数组一样,只不过这里的值是没个字符串”haizai ba !”}; //第一个字符串的地址,而调用 kk[1]时就等于调用了第一个字符串第 6 章 分支语句和逻辑操作符If 语句:条件操作符合错误防范,if(3==kk)//我们这样做如果==写成=,编译器就会报错!而 if(kk=3)将恒成立6.2 逻辑表达式OR 操作符||:i++ 6//如果 i=10,则在比较 i>6 时,i 会变成 11!!AND 操作符&&:if(110;//如果 x=0,第一个条件为假,后面的就不在判断了,避免了除零逻辑操作符的另一种表示方式:就是用 NOT、OR、AND 来代替! || &&。
在 C 语言中要加上头文件 iso646.h,他们不是 C语言的保留字,在 c++中不用头文件了,他们都是 c++的保留字!!6.3 字符函数库 cctype该函数库中的函数能够判断,输入的字符是大写,小写,数字,空格,符号等,比用逻辑操作符判断起来简单多 了 !6.4?:操作符:他是 C++唯一一个需要两个操作符的操作符,在程序员中广受欢迎!6.5switch 语句:当选择不是一个范围时,超过 3 个以上选项,一般就用 switch 语句,都不符合就用default:i++;break;Case ‘c’://如果 case 后面没有 break;那么将执行下一个 case,直到碰到 break!!case 标签都必须是一个单独值,非范围Case ‘C’:hanshu();break;//这样输入大写小写都行,这也是一种解决大小写一样的一种方法6.6break 和 continueBreak 是用在 switch 语句或任何循环中,他能够跳出 switch 或循环后面的语句出执行Continue 语句用于循环中,让程序跳过循环体当前一轮循环后面的代码,并开始下一轮循环;Goto 语句:一般情况下不要用 goto 语句,容易造成错误,一般在多层嵌套循环内层,直接跳出,用 goto 比用多个 break 简单第七章 函数 ——C++的程序模块函数在声明中接受参数与在定义中接受参数可以用不一样的变量名!如:void kk(long j);//声明 void kk(long k){}//定义在函数参数的过程中,如果基本类型(非复合类型)不匹配,C++会自动强制类型转换,但尽量避免强制类型转换,造成数据破坏7.3 函数与数组- 8 -引用的属性和特别之处 long kk=10;viod hans(long&kk);void hanshans(const long&kk)//声明变量、定义函数为了保证被调用函数只使用调用函数的变量值,而不是是修改变量值,我们一般情况下是不用引用的,如果要用引用我们可以将被调用函数中的引用声明为 const 引用,这样我们只能使用该函数,但是不能修改它的值,这就像是 const long*const kk;Void hans(kk+3);//这是错误的,现在的 C++ 是不允许将表达式传递给引用,当然在早期是可以的,而按值传递是允许的Void hanshans(kk+3);//这是正确的,在现在 C++中如果参数定义为 const 引用时,我们可以给他传递非变量名的参数因为这样//他创建了临时变量,用引用指向临时变量时,不会修改器临时变量值,这样避免了想修改原函数变量值,但没修改的状况//用 const 我们编程时不会去修改原函数的变量!!在 C++中使用引用时尽量将引用声明为 const 这样传递的类型可以转换将引用于用于结构 :引用非常适合用于结构和类,C++加入引用主要为了用于这些类型的,而不是基本的内置类型8.2.7 何时使用引用参数使用引用参数主要有两个原因1 程序员能够修改调用函数中的数据对象2 通过传递引用而不是整个数据对象,可以提高程序的运行速度当数据对象较大时,如结构与类对象,第二个原因最重要。
这也是使用指针参数的原因这是有道理的,因为引用参数实际上是及与指针的代码的另一个接口那么,什么时候应使用引用、什么时候使用指针、什么时候又应按值传递,应遵循下面原则:1 如果数局对象很小,如内置数据类型或小型结构,则按值传递2 如果数据对象是数组,则使用指针,因为这是唯一的选择,并将指针声明为指向 const 指针3 如果数据对象是较大的结构,则使用 const 指针或 const 引用,以提高程序的效率,这样可以节省复制结构所需的时间和空间4 如果数据对象是类对象,则使用 const 引用类设计的语义常常要求使用引用,这是 C++新增这项特性的主要原因,因此,传递类对象参数的标准方式是按引用传递对于修改调用函数中数据的函数:1 如果数据对象是内置数据类型,则使用指针如果看到诸如 fun(&kk)这样的代码(其中 kk 是 long 型),则将修改 kk2 如果数据对象是数组,则只能使用指针3 如果数据对象是结构,可以使用指针与引用4 如果数据对象是类对象,则使用引用。