C++-primer-(初学者可看笔记).pdf
《C++-primer-(初学者可看笔记).pdf》由会员分享,可在线阅读,更多相关《C++-primer-(初学者可看笔记).pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+-primer-(C+-primer-(初学者可看笔记初学者可看笔记)C+primerC+primer第一章第一章快速入门快速入门学习了一个学习了一个 c+c+程序最基本的框架,和如何完成程序最基本的框架,和如何完成一个完整的程序编程。一个完整的程序编程。了解已初始化和未初始化变量的区别。了解已初始化和未初始化变量的区别。初始化是初始化是一个很重要的概念,贯穿了一个很重要的概念,贯穿了 c+c+始终。始终。在程序变的很复杂之前学会做好注释,在在程序变的很复杂之前学会做好注释,在 c+c+中中使用使用/表示注释内容。表示注释内容。初步接触了初步接触了 whilewhile 语句,语句,for
2、for 语句,语句,ifif 语句。语句。WhileWhile 语句提供了迭代执行功能。语句提供了迭代执行功能。whilewhile(conditioncondition)while_body_statement while_body_statement;ForFor 语句可以简化管理循环变量的代码。语句可以简化管理循环变量的代码。forfor(一个初始化语句,一个条件,一个表达式一个初始化语句,一个条件,一个表达式);IfIf 语句用来转折编程。语句用来转折编程。if(condition)if(condition)else ;else ;类机制是类机制是 c+c+中最重要的特征之一,我们通过
3、定中最重要的特征之一,我们通过定义类来定义自己的数据结构。义类来定义自己的数据结构。需要注意的是标准需要注意的是标准库的头文件用尖括号库的头文件用尖括号括起来,括起来,而像自定义的类而像自定义的类这种非标准库的头文件用双引号“”括起来。这种非标准库的头文件用双引号“”括起来。类类可以执行很多操作符,例如可以执行很多操作符,例如+=+=。第二章第二章变量和基本类型变量和基本类型(1 1)基本内置类型:表示整数,字符,和布尔)基本内置类型:表示整数,字符,和布尔值的算术类型合称整型。除了值的算术类型合称整型。除了 boolbool 型外的整型型外的整型又分带符号和无符号类型。类型又分带符号和无符号
4、类型。类型 floatfloat,doubledouble和和 longlong doubledouble 都是浮点型。单精度浮点型只能都是浮点型。单精度浮点型只能保证保证 6 6 位有效数字,而双精度可以保证位有效数字,而双精度可以保证 1010 位有位有效数字。效数字。(2 2)字面值常量:整型字面值规则,可以是使)字面值常量:整型字面值规则,可以是使用十进制,八进制,十六进制。浮点字面值规则用十进制,八进制,十六进制。浮点字面值规则可以用十进制或者是科学计数法来表示浮点字可以用十进制或者是科学计数法来表示浮点字面值常量。面值常量。BoolBool 字面值和字符字面值是字面值和字符字面值是
5、 truetruefalsefalse。字符串字面值常量用双引号括起来的零。字符串字面值常量用双引号括起来的零个或者多个字符表示。个或者多个字符表示。多行字面值可以再一行的多行字面值可以再一行的末尾家一反斜杠符号可将此行和下行当做一行末尾家一反斜杠符号可将此行和下行当做一行处理。处理。(3 3)变量:变量是提供了程序可以操作的有名)变量:变量是提供了程序可以操作的有名字的存储区。字的存储区。而变量名是变量的标识符。而变量名是变量的标识符。可以由可以由字母,字母,数字和下划线组成。数字和下划线组成。变量名必须是由字母变量名必须是由字母或者下划线开头的,并且区分大小写。或者下划线开头的,并且区分大
6、小写。(4 4)constconst 限定符:定义限定符:定义 constconst 对象是把一个对象是把一个对象转化成一个常量。对象转化成一个常量。因为常量在定义后不能被因为常量在定义后不能被修改,所以定义是必须初始化。修改,所以定义是必须初始化。(5 5)引用:引用就是对象的另一个名字,是一)引用:引用就是对象的另一个名字,是一种复合类型,通过在变量名前添加“&”符号来种复合类型,通过在变量名前添加“&”符号来定义。定义。(6 6)typedeftypedef 名字:名字:typedeftypedef 可以用来定义类型可以用来定义类型的同义词。一般使用的同义词。一般使用 typedefty
7、pedef 有三种目的,有三种目的,1.1.为了隐藏特定类型的实现,强调使用类型的目为了隐藏特定类型的实现,强调使用类型的目的。的。2.2.简化复杂的类型定义,使其更易理解。简化复杂的类型定义,使其更易理解。3.3.允许一种类型用于多个目的,允许一种类型用于多个目的,同时使得每次使用同时使得每次使用该类型的目的明确。该类型的目的明确。(7 7)枚举:)枚举:enumenum 枚举类型名枚举类型名 枚举成员枚举成员 1 1,枚,枚举成员举成员 2 2;(8 8)类类型:类类型:c+c+中通过定义类来自定义数据类中通过定义类来自定义数据类型。型。类定义了该类型的对象包含的数据和该类型类定义了该类型
8、的对象包含的数据和该类型的对象可执行的操作。的对象可执行的操作。定义了一关键字定义了一关键字 classclass 开开始,始,其后是该类的名字标识符。其后是该类的名字标识符。类体位于花括号类体位于花括号里面,花括号后,面必须要跟一个分号。里面,花括号后,面必须要跟一个分号。第三章第三章标准库类型标准库类型1.1.命名空间的命名空间的 usingusing 声明:声明:使用使用 usingusing 说明就可说明就可以在不需要加前缀以在不需要加前缀 namespace_namenamespace_name:的情况下:的情况下访问命名空间中的名字。如果在头文件中放置访问命名空间中的名字。如果在头
9、文件中放置usingusing 声明,就相当于在包含该头文件的每个程声明,就相当于在包含该头文件的每个程序中都放置了同一序中都放置了同一 usingusing 声明,声明,不论该程序是否不论该程序是否需要需要 usingusing 声明。声明。2.2.标准库标准库 stringstring 类型:类型:string string 类型支持长度类型支持长度可变的字符串,标准库可变的字符串,标准库 stringstring 类型的目的就是类型的目的就是满足对字符串的一般应用。满足对字符串的一般应用。3.3.标准库标准库 vectorvector 类型:类型:vectorvector 是同一种类型的
10、是同一种类型的对象的集合,对象的集合,每个对象都有一个对应的整数索引每个对象都有一个对应的整数索引值,我们一般把值,我们一般把 vectorvector 称作容器。称作容器。vectorvector 是是一个类模板。一个类模板。使用模板可以编写一个类定义或函使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。数定义,而用于多个不同的数据类型。4 4 标准库标准库 bitsetbitset 类型:标准库提供的类型:标准库提供的bitsetbitset 类类简化了位集的处理。类似于简化了位集的处理。类似于 vectorvector,bitsetbitset 类类是一种类模板,是一种类模
11、板,而与而与 vectorvector 不同的是不同的是 bitsetbitset 类类型对象的区别仅在其长度而不在其类型。型对象的区别仅在其长度而不在其类型。第四章第四章语句语句1.if1.if 语句:语句:if if 语句根据特定表达式是否为真语句根据特定表达式是否为真来有条件的执行另一语句。来有条件的执行另一语句。IfIf 语句有两种形式,语句有两种形式,一种有带一种有带 elseelse 分支,而另一种则没有。分支,而另一种则没有。2.switch2.switch 语句:语句:switchswitch 语句提供了一种更方便语句提供了一种更方便的方法来实现深沉嵌套的的方法来实现深沉嵌套的
12、 if/elseif/else 逻辑。在逻辑。在switchswitch 语句中,漏写语句中,漏写 breakbreak 语句是常见的程序语句是常见的程序错误。但是错误。但是breakbreak 语句,也要慎用,并不是总是语句,也要慎用,并不是总是恰当的。在恰当的。在 switchswitch 语句中,语句中,defaultdefault 标号提供标号提供了相当于了相当于 elseelse 子句的功能。子句的功能。3.while3.while 语句:当条件为真的时候,语句:当条件为真的时候,whilewhile 语句语句反复执行目标语句。反复执行目标语句。再循环条件中定义的变量在再循环条件中定
13、义的变量在每次的循环里面都要经历创建和撤销的过程。每次的循环里面都要经历创建和撤销的过程。4.for4.for 语句:语句:forfor 语句的语法形式是:语句的语法形式是:forfor(init-statementinit-statement;condition condition;expressionexpression)statementstatement。5.do while5.do while 语句:该语句保证了循环体至少执语句:该语句保证了循环体至少执行一次。行一次。do statement whiledo statement while(conditioncondition);分
14、号一定不能忘了。分号一定不能忘了。6.break6.break 语句:语句:breakbreak 语句用在结束最近的语句用在结束最近的whilewhile,do while,for,switchdo while,for,switch 语句,并将程语句,并将程序的执行权传递给紧接在被终止语句之后的语序的执行权传递给紧接在被终止语句之后的语句。句。7.continue7.continue 语句:语句:continuecontinue 语句导致最近的循语句导致最近的循环语句的当次迭代提前结束。对于环语句的当次迭代提前结束。对于 whilewhile 和和 dodowhilewhile 语句,继续求解
15、循环条件。而对于语句,继续求解循环条件。而对于 forfor 循循环,环,程序流程接着求解程序流程接着求解 forfor 语句头中的语句头中的 expexp 表达表达式。式。8.goto8.goto 语句:语句:由于所有由于所有 gotogoto 的程序都可以改写的程序都可以改写成为不用成为不用 gotogoto 语句,所以,也没有必要再使用语句,所以,也没有必要再使用gotogoto 语句了。语句了。第五章第五章 函数函数1.1.函数的定义:函数的定义:所谓的函数就是由函数名以及一所谓的函数就是由函数名以及一组操作数类型唯一的表示。组操作数类型唯一的表示。函数的操作数就是形函数的操作数就是形
16、参,参,在一对圆括号中声明,在一对圆括号中声明,形参与形参之间以逗形参与形参之间以逗号隔离。号隔离。而所谓的函数调用就是使用调用操作符而所谓的函数调用就是使用调用操作符()()实现函数的调用。实现函数的调用。函数的调用其实就是做了函数的调用其实就是做了两件事情:两件事情:用对应的实参初始化函数的形参,用对应的实参初始化函数的形参,并并将控制权转移给被调用的函数。将控制权转移给被调用的函数。形参与实参的差形参与实参的差别在于形参是在函数的形式表中定义的,别在于形参是在函数的形式表中定义的,并由调并由调用函数是传递给函数的实参初始化。用函数是传递给函数的实参初始化。2.2.定义函数的一般形式:定义
17、函数的一般形式:定义无参函数的一般形定义无参函数的一般形式:类型标识符式:类型标识符 函数名()函数名()声明部分声明部分 语句语句 定义有参函数的一般形式:类型标识符定义有参函数的一般形式:类型标识符 函数名函数名(形式参数列表)(形式参数列表)声明部分声明部分 语句语句 。3.3.函数的参数和函数的值:函数的参数和函数的值:其实在定义函数时指其实在定义函数时指定的形参,定的形参,在未出现函数调用时,在未出现函数调用时,它们并不占内它们并不占内存中的存储单元,存中的存储单元,因此才称它们是形式参数或虚因此才称它们是形式参数或虚拟参数,拟参数,表示它们并不是实际存在的数据,表示它们并不是实际存
18、在的数据,只有只有在函数发生调用时,在函数发生调用时,函数中的形参才被分配内存函数中的形参才被分配内存单元,单元,一遍接收从实参传来的数据。一遍接收从实参传来的数据。在每一次的在每一次的调用结束后,形参所占的内存单元也会被释放。调用结束后,形参所占的内存单元也会被释放。实参可以是常量,实参可以是常量,变量或者表达式。变量或者表达式。而在定义函而在定义函数时,数时,必须在函数首部指定形参的类型,必须在函数首部指定形参的类型,在函数在函数的调用过程中,的调用过程中,实参与形参的类型应相同或赋值实参与形参的类型应相同或赋值兼容,实参变量对形参变量的数据传递是值传兼容,实参变量对形参变量的数据传递是值
19、传递,单向传递,只有实参传给形参,不能由形参递,单向传递,只有实参传给形参,不能由形参传回给实参。函数的返回值就是通过函数中的传回给实参。函数的返回值就是通过函数中的returnreturn 语句获得,函数的类型决定返回值的类语句获得,函数的类型决定返回值的类型。型。4.4.函数的调用:函数的调用:函数的调用方式一般用三种,函数的调用方式一般用三种,一、一、函数语句。二、函数表达式。三、函数参数。想函数语句。二、函数表达式。三、函数参数。想要调用一个函数要具备以下的几个条件:要调用一个函数要具备以下的几个条件:首先被首先被调用的函数必须是已经存在的。调用的函数必须是已经存在的。如果使用到库函如
20、果使用到库函数,记得在开头用数,记得在开头用#include#include 包含进来。如果使包含进来。如果使用用户自己定义的函数,用用户自己定义的函数,而该函数与调用它的函而该函数与调用它的函数在同一程序单位中,且位置在主调函数之后,数在同一程序单位中,且位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声则必须在调用此函数之前对被调用的函数作声明。明。5.5.内置函数:这是内置函数:这是c+c+提供的一种可以提高效率提供的一种可以提高效率的方法,的方法,在编译时将所调用函数的代码直接嵌入在编译时将所调用函数的代码直接嵌入主调函数中,主调函数中,而不是将流程转出去。而不是将流程转出去
21、。指定内置函指定内置函数的方法只需在函数首行的左端加一个关键字数的方法只需在函数首行的左端加一个关键字inlineinline 即可。内置函数虽然能节省运算时间,即可。内置函数虽然能节省运算时间,但是会增加目标程序的长度。但是会增加目标程序的长度。因此只将规模小的因此只将规模小的函数声明成内置函数。函数声明成内置函数。6.6.函数的重载:函数的重载:C+C+允许用同一个函数名定义多允许用同一个函数名定义多个函数,个函数,这些函数的参数个数和类型不同。这些函数的参数个数和类型不同。这就这就是函数的重载。是函数的重载。是一个函数名可以多用,是一个函数名可以多用,有不同有不同的含义。的含义。7.7.
22、函数的模板:函数的模板:所谓的函数的模板,所谓的函数的模板,实际上就是实际上就是建立一个通用函数,建立一个通用函数,其函数类型和形参类型不具其函数类型和形参类型不具体指定,体指定,用一个虚拟的类型来代表。用一个虚拟的类型来代表。这个通用函这个通用函数就是函数模板。数就是函数模板。凡是函数体相同的函数都可以凡是函数体相同的函数都可以用这个模板来代替,用这个模板来代替,不必定义多个函数,不必定义多个函数,只需要只需要在模板中定义一次即可。在模板中定义一次即可。在调用函数系统会根据在调用函数系统会根据实参的类型来取代模板中的虚拟类型,实参的类型来取代模板中的虚拟类型,从而实现从而实现了不同函数的功能
23、。了不同函数的功能。定义函数模板的一般形式为定义函数模板的一般形式为templatetemplate T或或 templatetemplate classT。用函数模板比函数重载更方便,用函数模板比函数重载更方便,程序更简洁。程序更简洁。但但是只适用于函数的参数个数相同而类型不同。是只适用于函数的参数个数相同而类型不同。8.8.有默认参数的函数:有默认参数的函数:有时候在主函数调用别的有时候在主函数调用别的被调函数时,被调函数时,使用同样的实参,使用同样的实参,因此可在定义函因此可在定义函数的时候给形参一个默认值。这样可以简化编数的时候给形参一个默认值。这样可以简化编程,程,提高运行效率。提高
24、运行效率。一个函数不能既作为重载函一个函数不能既作为重载函数,数,又作为有默认参数的函数,又作为有默认参数的函数,因为很容易出现因为很容易出现二义性。二义性。9.9.函数的嵌套调用:函数的嵌套调用:C+C+不允许对函数作嵌套定不允许对函数作嵌套定义,义,也就是说在一个函数中不能完整地包含另一也就是说在一个函数中不能完整地包含另一个函数。个函数。在一个程序中每一个函数的定义都是互在一个程序中每一个函数的定义都是互相平行很独立的。虽然布恩那个嵌套定义函数,相平行很独立的。虽然布恩那个嵌套定义函数,但是可以嵌套调用函数。但是可以嵌套调用函数。10.10.函数的递归调用:在调用一个函数的过程中函数的递
25、归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身。又出现直接或间接地调用该函数本身。这就是函这就是函数的递归调用。数的递归调用。11.11.局部变量和全局变量:所谓的局部变量就是局部变量和全局变量:所谓的局部变量就是在一个函数内部定义的变量,在一个函数内部定义的变量,只在本函数范围内只在本函数范围内有效,有效,只能在本函数内才能使用。只能在本函数内才能使用。全局变量是在全局变量是在函数之外定义的变量。函数之外定义的变量。全局变量的有效范围为从全局变量的有效范围为从定义变量的位置开始到本源文件结束。定义变量的位置开始到本源文件结束。12.12.变量的存储类型:分为两种,静态和动态存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- primer 初学者 笔记
限制150内