![点击分享此内容可以赚币 分享](/master/images/share_but.png)
C++-primer-(初学者可看笔记).doc
《C++-primer-(初学者可看笔记).doc》由会员分享,可在线阅读,更多相关《C++-primer-(初学者可看笔记).doc(10页珍藏版)》请在咨信网上搜索。
1、C+ primer 第一章 快速入门学习了一个c+程序最基本的框架,和如何完成一个完整的程序编程。了解已初始化和未初始化变量的区别。初始化是一个很重要的概念,贯穿了c+始终。在程序变的很复杂之前学会做好注释,在c+中使用/表示注释内容。初步接触了while语句,for语句,if语句。While语句提供了迭代执行功能。while(condition) while_body_statement ;For语句可以简化管理循环变量的代码。for (一个初始化语句,一个条件,一个表达式);If语句用来转折编程。if (condition) else ;类机制是c+中最重要的特征之一,我们通过定义类来定义
2、自己的数据结构。需要注意的是标准库的头文件用尖括号括起来,而像自定义的类这种非标准库的头文件用双引号“”括起来。类可以执行很多操作符,例如 + = 。第二章 变量和基本类型(1)基本内置类型:表示整数,字符,和布尔值的算术类型合称整型。除了bool型外的整型又分带符号和无符号类型。类型float,double和long double都是浮点型。单精度浮点型只能保证6位有效数字,而双精度可以保证10位有效数字。(2)字面值常量:整型字面值规则,可以是使用十进制,八进制,十六进制。浮点字面值规则可以用十进制或者是科学计数法来表示浮点字面值常量。Bool字面值和字符字面值是true false。字符
3、串字面值常量用双引号括起来的零个或者多个字符表示。多行字面值可以再一行的末尾家一反斜杠符号可将此行和下行当做一行处理。(3)变量:变量是提供了程序可以操作的有名字的存储区。而变量名是变量的标识符。可以由字母,数字和下划线组成。变量名必须是由字母或者下划线开头的,并且区分大小写。(4)const限定符:定义const对象是把一个对象转化成一个常量。因为常量在定义后不能被修改,所以定义是必须初始化。(5)引用:引用就是对象的另一个名字,是一种复合类型,通过在变量名前添加“&”符号来定义。(6)typedef名字:typedef可以用来定义类型的同义词。一般使用typedef有三种目的,1.为了隐藏
4、特定类型的实现,强调使用类型的目的。2.简化复杂的类型定义,使其更易理解。3.允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。(7)枚举:enum 枚举类型名枚举成员1,枚举成员2;(8)类类型:c+中通过定义类来自定义数据类型。类定义了该类型的对象包含的数据和该类型的对象可执行的操作。定义了一关键字class开始,其后是该类的名字标识符。类体位于花括号里面,花括号后,面必须要跟一个分号。第三章 标准库类型1.命名空间的using声明:使用using说明就可以在不需要加前缀namespace_name:的情况下访问命名空间中的名字。如果在头文件中放置using声明,就相当于在包含该
5、头文件的每个程序中都放置了同一using声明,不论该程序是否需要using声明。2.标准库string类型: string类型支持长度可变的字符串,标准库string类型的目的就是满足对字符串的一般应用。3.标准库vector类型:vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值,我们一般把vector称作容器。vector是一个类模板。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。 4标准库bitset类型:标准库提供的bitset类简化了位集的处理。类似于vector,bitset类是一种类模板,而与vector不同的是bitset类型对象的区别仅在
6、其长度而不在其类型。第四章 语句 1.if 语句: if语句根据特定表达式是否为真来有条件的执行另一语句。If 语句有两种形式,一种有带else分支,而另一种则没有。2.switch 语句:switch语句提供了一种更方便的方法来实现深沉嵌套的if/else逻辑。在switch语句中,漏写break语句是常见的程序错误。但是break语句,也要慎用,并不是总是恰当的。在switch语句中,default标号提供了相当于else子句的功能。3.while语句:当条件为真的时候,while语句反复执行目标语句。再循环条件中定义的变量在每次的循环里面都要经历创建和撤销的过程。 4.for语句:for
7、语句的语法形式是:for (init-statement; condition;expression ) statement。5.do while 语句:该语句保证了循环体至少执行一次。do statement while(condition);分号一定不能忘了。6.break 语句:break语句用在结束最近的while,do while ,for ,switch 语句,并将程序的执行权传递给紧接在被终止语句之后的语句。7.continue 语句:continue语句导致最近的循环语句的当次迭代提前结束。对于while和do while语句,继续求解循环条件。而对于for循环,程序流程接着求
8、解for语句头中的exp表达式。 8.goto 语句:由于所有goto的程序都可以改写成为不用goto语句,所以,也没有必要再使用goto语句了。第五章 函数 1.函数的定义:所谓的函数就是由函数名以及一组操作数类型唯一的表示。函数的操作数就是形参,在一对圆括号中声明,形参与形参之间以逗号隔离。而所谓的函数调用就是使用调用操作符()实现函数的调用。函数的调用其实就是做了两件事情:用对应的实参初始化函数的形参,并将控制权转移给被调用的函数。形参与实参的差别在于形参是在函数的形式表中定义的,并由调用函数是传递给函数的实参初始化。 2.定义函数的一般形式:定义无参函数的一般形式:类型标识符 函数名(
9、) 声明部分 语句 定义有参函数的一般形式:类型标识符 函数名(形式参数列表) 声明部分 语句 。3.函数的参数和函数的值:其实在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此才称它们是形式参数或虚拟参数,表示它们并不是实际存在的数据,只有在函数发生调用时,函数中的形参才被分配内存单元,一遍接收从实参传来的数据。在每一次的调用结束后,形参所占的内存单元也会被释放。实参可以是常量,变量或者表达式。而在定义函数时,必须在函数首部指定形参的类型,在函数的调用过程中,实参与形参的类型应相同或赋值兼容,实参变量对形参变量的数据传递是值传递,单向传递,只有实参传给形参,不能由形
10、参传回给实参。函数的返回值就是通过函数中的return语句获得,函数的类型决定返回值的类型。4.函数的调用:函数的调用方式一般用三种,一、函数语句。二、函数表达式。三、函数参数。想要调用一个函数要具备以下的几个条件:首先被调用的函数必须是已经存在的。如果使用到库函数,记得在开头用#include 包含进来。如果使用用户自己定义的函数,而该函数与调用它的函数在同一程序单位中,且位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。5.内置函数:这是c+提供的一种可以提高效率的方法,在编译时将所调用函数的代码直接嵌入主调函数中,而不是将流程转出去。指定内置函数的方法只需在函数首行的左端加
11、一个关键字inline即可。内置函数虽然能节省运算时间,但是会增加目标程序的长度。因此只将规模小的函数声明成内置函数。6.函数的重载:C+允许用同一个函数名定义多个函数,这些函数的参数个数和类型不同。这就是函数的重载。是一个函数名可以多用,有不同的含义。7.函数的模板:所谓的函数的模板,实际上就是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就是函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需要在模板中定义一次即可。在调用函数系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。定义函数模板的一般形式为 tem
12、plate 或template 。用函数模板比函数重载更方便,程序更简洁。但是只适用于函数的参数个数相同而类型不同。8.有默认参数的函数:有时候在主函数调用别的被调函数时,使用同样的实参,因此可在定义函数的时候给形参一个默认值。这样可以简化编程,提高运行效率。一个函数不能既作为重载函数,又作为有默认参数的函数,因为很容易出现二义性。9.函数的嵌套调用:C+不允许对函数作嵌套定义,也就是说在一个函数中不能完整地包含另一个函数。在一个程序中每一个函数的定义都是互相平行很独立的。虽然布恩那个嵌套定义函数,但是可以嵌套调用函数。10.函数的递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本
13、身。这就是函数的递归调用。11.局部变量和全局变量:所谓的局部变量就是在一个函数内部定义的变量,只在本函数范围内有效,只能在本函数内才能使用。全局变量是在函数之外定义的变量。全局变量的有效范围为从定义变量的位置开始到本源文件结束。12.变量的存储类型:分为两种,静态和动态存储。所谓的静态存储方式是指在程序运行期间,系统对变量分配固定的存储空间。而动态存储方式则是在程序运行期间,系统对变量动态地分配存储空间。前面提到的全局变量就是存放在静态存储区中,在程序执行的过程中它们占据固定的存储单元。在动态存储区中存放的是函数形式参数,和函数中的自动变量,以及函数调用时的现场保护和返回地址等。可以使用st
14、atic将局部变量变为静态局部变量。静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。第六章 数组与字符串1.数组的定义:数组是一组相同类型的数据的集合,他们占用连续的存储单元,数组中的每个数据称为一个元素。2.一维数组定义:数组的三要素是其名称,以及每个元素的数据类型,还有就是必须是常量表达式的数据个数。在定义一个数组的时候必须要明确数组中的元素的个数,否则编译器会报错。还有要注意的是在访问数组的时候,最大下表应该为数组元素个数减1,不然会导致程序的异常行为。依然可以使用sizeof()来计算某个数组所包含的元素个数。3.字符数组与字符串:字符数组是指数组里面是存储字符数据
15、,在c+中,字符串是一空字符(/0)结尾的字符组,空字符是字符串结束的标志。我们可以使用cin对象的getline来安全读取数据。Getline可以读取包括空格的整行,也可以限制最多读取的字符数,或结束字符。可以使用strcpy将字符串复制到另一个字符数组中,增加一个参数可以限制最多复制的字符数,防止写入的数据时越过数组边界。使用strcmp来比较字符串的大小,使用strcat连接字符串,使用strlen来获得字符串的长度。4.多维数组:以为数组可看作是一行数据,二维数组对应由行列构成的数据网络,其中一维对应于行,另一维对应于列。访问二维数组中的元素,需要用2个下标,下标都是从0开始的,c+中
16、规定,先指定行下标,再指定列下标。5.创建和使用指针变量:学习指针之前首先要了解一下地址,地址单元的编号就是该单元的地址,它表明了内存单元在内存中的相对位置。变量的类型不同,占用的内存大小也不同。变量占用的首个内存单元的地址就是变量的地址。在C+中可以定义特殊的变量,用来保存普通的变量地址,这就是指针变量。用“*”放在变量前面说明变量是用来存储一个变量的地址,一般定义一个指针变量的时候要对它进行初始化,这是个良好的习惯。我们通过&,=将一个变量的地址保存到指针变量之中。称指针变量指向某个变量。要特别注意的是,在指针赋值的时候,取地址的变量类型必须要与指针类型一样,否则编译器报错。值得注意的是,
17、在定义指针变量之后,指针变量前的 * 表示解除引用,表示“存储在处的值”。6.指针的使用:一 传递函数参数,实现对实参的间接修改。二 访问类中成员数据和成员函数。 三 管理堆中的数据。6.栈和堆:每个程序运行时,会创建5个内存区域:全局名称空间(全局变量),栈(保存局部变量和函数形参),堆(自由存储区,是预留给程序员的大块内存,程序员可以从堆中请求内存空间,使用后释放内存空间),寄存器(用于内部管理,CPU内部的临时数据,指令缓存,状态管理),代码空间(保存程序指令)。7. 栈和堆的使用:使用new运算符可以从堆中分配内存。堆中分配的内存,没有对应的变量,只能通过指针间接访问。而使用delet
18、e运算符,可以释放请求的堆空间。,使用完堆的内存区域后,必须调用delete释放相应空间,避免内存泄露。在使用了delete 指针之后,该指针将成为悬摆指针,解析或者再次delete该指针将会导致程序崩溃。所以在delete指针后,应赋值指针NULL或者重新分配内存空间delete的本质只是释放指针所指向的堆空间,对指针本身并没有什么影响。此时指针依然指向原先的内存位置。第七章 类的基础概念1.类和对象的定义:我们首先要知道的是抽象是对具体对象问题进行概括,抽出这一类对象的公共性质加以描述的过程。将抽象出的数据成员,代码成员相结合,视为一个整体,通常我们称之为封装。在函数中我们用括起来。继承是
19、c+中支持层次分类懂得一种机制,允许程序员在保持原有类特性的基础上,进行更具体的说明。总的来说,类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供统一的抽象描述。其内部包括属性和行为两个主要部分。利用类我们可以实现数据的封装,隐藏,继承与派生。类一般是用来编写大型的复杂程序,其模块化程度比c中采用函数更高。类中的成员分为:数据成员和成员函数。一般在public后面的声明是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。而在private后面的申明,只允许本类中的函数访问,而类外部的任何函数都不能访问。值得注意的一点是,如果在类中不写private和public的话,那
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- primer 初学者 笔记
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。