第一章到第六章复习c++汇总_第1页
第一章到第六章复习c++汇总_第2页
第一章到第六章复习c++汇总_第3页
第一章到第六章复习c++汇总_第4页
第一章到第六章复习c++汇总_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 C+ 语言概述1.1 c+ 语言的发展c+ 语言起源于 c 语言。 1980 年,美国贝尔实验室的 Bjarne Stroustrup 博士及其同事在 c 语 言的基础上,从 Simula 67 中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计 语言。最初称为“带类的 C,至U 1983年取名为C+。以后又经过不断的完善和发展,成为目前的 C+语言。一方面,C+语言将c语言作为它的子集,使它能与 c语言兼容;另一方面,C+语言支持 面向对象的程序设计,这是对 C语言的重要改进。1.2 C+ 语言的特点(1) c+ 语言是一种面向对象的程序设计语言。(2) c+ 是程序员和

2、软件开发者在实践中创造的。(3) C+是C语言的超集。1.3 C+ 程序的开发过程(1) 编辑(2) 编译(3) 链接(4) 运行和调试1.4 C+ 程序的基本框架1 基本组成#include Void main()2 结构化程序设计框架函数是程序的基本组成单元,是程序中完成一定功能的模块。函数的声明函数的定义函数的调用3 面向对象程序设计框架类的定义类成员函数的定义第二章 C+ 的基本语法2.1 标识符是用来标识变量、函数、数据类型等的字符序列。C+中的标符可以由字母、下划线(_)和数字09 组成,但必须是以字母或下划线( _)开头。2.2 关键字C+语言中预定义了一些标识符,称之为关键字,

3、系统有特定用途,它们不能被再定义。2.3 数据类型布尔型、字符型、整型、浮点型和空类型是基本数据类型。指针、数组、引用、结构和类可以通 过基本数据类型进行构造,称之为复合数据类型。2.4 变量变量就是机器一个内存位置的符号名,在该内存位置可以保存数据,并可通过符号名进行访问。 为了提高程序的可读性,给变量命名时,应该注意使用有意义的名字。变量第一次赋值称之为初始 化,变量在使用之前应当先声明。2.5 常量常量是在程序运行过程中,其值不能改变的量。2.6 基本输入输出C+语言本身没有输入输出功能,而是通过输入输出库完成I/O操作。C程序使用的stdio (标准I/O)I/O库也能够在 C+中使用

4、;另外 C+语言还提供了一种称之为 iostream ( I/O流库)的I/O 库。 Iostream 流主管数据类型的识别工作和沟通操作系统,全权负责把流中的数据送到对应的设备 中。流的格式操作,如对齐,宽度限制、精度规定、数制显示等形式也可直接以输出流状态的方式操作。7. 运算符及表达式C+基本的各种运算符构成(算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋 值运算符、逗号运算符几其它运算符 )以及它们的优先级和结合性。自增、自减运算符,前缀式先将操作数增1(或减 1),然后取操作数的新值参与表达式的运算。后缀是先将操作数增 1(或减 1)之前的值参与表达式的运算, 到表达式

5、的值被引用之后再做加 1(或 减 1)运算。关系运算符两边的数值结果必须是类型相同的。在实现优先级与实际需要不相符时, 需要使用括号来改变。 参加运算的两个操作数类型不同时, C+将自动作隐式类型转换,但有时要作强制类形转换。表达式和语句的一个重要区别是:表达式具有值,而语句是没有值的并且语句末尾要加分号。第三章 C+ 的基本语句3.1 C+提供了哪些常用语句?答:表达式语句和空语句;复合语句;分支语句包括条件语句和开关语句;循环语句包括 while 语句、 do-while 语句、 for 语句三种形式。转向语句包括 goto 、 break 、 continue 和 return 语句。3

6、.2 什么是表达式语句?它与表达式有什么不同?答:任何一个表达式后加上分号就是一条表达式语句。表达式与表达式语句有着不同的用途。在需要表达式的地方不要用表达式语句,反之亦然。例 如,条件语句中,关键字 if 后面括号内是表达式,这时就不能用表达式语句,同样地,在程序中函 数体内要求是一条表达式语句,如果不写分号,将会出错。3.3什么是复合语句?什么是分程序?答:复合语句是由花括号括起来的两条或两条以上的语句序列。分程序是含有定义变量类型的说明语句的复合语句。它是一种特殊的复合语句。3.4条件语句的格式如何?if语句中对else子句有何规定?答:在if语句中最多只能有一个 case子句,也可以没

7、有 else子句。规定else子句是与它最近的一个if子句配对使用的。3. 5开关语句的格式如何?break语句在开关语句中有何作用?答:switchv整型表达式case整常型表达式1: 语句序列1case整常型表达式 2: 语句序列2case整常型表达式 n: 语句序列ndefaults 语句序列n+1先计算switch中表达式的值,在大括号中若找到一个匹配的值就从该语句开始,依次向下执行。否则,执行default后面的语句组。在 语句序列 中如有break语句时,执行到该语句时,退出整个开关语句,执行开关语句后面的语句。如果执行完一个 语句序列 后没有遇到break语句,则执行该语句序列的

8、下一个 语句序列, 并依次类推。3.6开关语句中,case子句的条件有什么特点?答:当条件值为一系列的整数值时,考虑用 switch会比较简捷。(1) switch 后面的表达式只能是整型、字符型或枚举表达式。(2) case语句的标号不能重名。(3) case语句通常与break联用,多个case可以共用一组执行语句。各个case (包括default )的出现次序可以任意,在每个case分支都带有break的情况下,case次序不影响执行结果。3.7 C+提供哪些循环语句?它们各自有什么特点?它们可以相互替代吗?可以相互嵌套吗?答:C+提供如下3种循环语句。(1)while循环语句(2)d

9、o-while循环语句(3)for循环语句while循环语句先判断是否满足循环条件,如果满足循环条件,则执行一次循环体,再判断是否执行下一次循环。Do-while循环语句先执行一次循环体后再判断是否继续执行循环体还是退出循环。For循环语句,先设置循环变量初值,再判断是执行循环体还是退出循环。如果执行了循环体,再改变循环变量值后,判断是执行下一次循环体还是退出循环,依次类推。3种循环语句是可以替代的,它们以while循环为最简单,do-while循环和for循环都可以写成while循环的形式。3种循环语句可以相互嵌套,任何一种循环的循环体内可以包含任何一种循环语句。3.8 while循环语句与

10、do-while循环语句有何区别?答:这两种循环语句十分相近,其区别仅在于do-while 循环语句在判断循环条件之前先执行一次循环体。可用 while循环替代do-while 循环。3.9 for循环语句有何特点?答:for循环语句在使用方面比较灵活。 for循环语句中for关键字后面括号内的 3个表达式可以 移到括号外面,使得括号内有两个、一个或没有表达式,但两个分号不能省略。另外,还可以将循环体内的简单功能放到括号内。 for循环语句在使用中各种花样比较多,编程者可根据需要来选择。3.10 break语句在循环体中有什么作用?答:在循环体内遇到 break语句,则将退出该重循环。如果有多

11、重循环,break语句只是退出它所在的那重循环,到其外层循环中。3.11continue 语句的功能是什么?答:该语句只能用在循环体内,执行该语句将结束本次循环,转去判断是否还再执行下一次循环。第4章函数知识点1函数的定义在C+中,定义函数的一般形式为:返回类型 函数名 ( 形式参数表)函数体其中,返回类型 是该函数返回值的数据类型,若该函数无返回值,只是一个过程调用,则该 函数的类型为void。函数名 是一种标识符,通过它来调用函数。形式参数表 由逗号分隔,分别说明函数的各个形式参数,若无形式参数,圆括号也不可省略。 形式参数的使用将使被调用函数可以从调用函数那里获取数据。函数体 可以包含若

12、干个变量和函数的定义,以及各种语句序列。若函数体是0条语句,称该函数为空函数。无论函数体内有多少条语句,花括号是不可省的。注意:C+不允许函数定义嵌套。另外,关于函数体中return语句的形式有两种:(1) retum表达式;/用于带返回值的函数(2) return ; /用于无返回值的函数,即返回类型为void的函数。知识点2函数的说明函数的说明又称为函数的声明。在C+中,函数的说明原则有以下两点。(1) 若一个函数先定义,后调用,则调用前可以不必说明;(2) 若一个函数先调用,后定义,则调用前必须说明。说明调用的函数的方法为:数据类型 函数名 ( 参数表);知识点3函数的调用在C+中,函数

13、调用的格式为:函数名 ( 实参表);实参表应该和形参表意义对应。根据对函数返回值的使用方式,函数的调用方法大致可分为:(1)语句调用;(2)表达式调用;(3)参数调用。函数在调用之前,一定要定义或说明。函数调用过程就是将实参传递给给形参,执行函数体后将结果返回的过程。知识点4函数的原型说明在C+中,在调用任何函数之前,必须确保该函数已有函数原型。C+函数的声明(说明)就是原型的声明:这种声明也叫函数原型。函数原型的语法格式与函数的说明格式相同。格式如下:数据类型 函数名 (形参列表);函数原型说明的两种形式为:(1) 直接使用函数定义的头部,并且必须在后面加上一个分号;(2) 在函数原型说明中

14、省略参数列表中的形参变量名,只给出函数名、函数类型、参数的个 数及次序,注意函数原型说明后面的分号不能省略。知识点5函数的返回值类型函数返回类型根据函数是否带有参数以及函数是否有返回值,可将函数分为4种,(1)带参数的有返回值函数(2)不带参数的有返回值函数(3)带参数的无返回值函数 (4)不带参数的无返回值函数。知识点6函数的参数传递方式(1) 传值调用:要求实参为常量值或表达式值,形参为变量。特点是:在被调用函数中改变形参值只影响副本中的值,而对实参变量值没有影响。实现机制:将实参值传递给形参,即形参从实参处拷贝一个副本。(2) 传址调用:要求实参用变量的地址值,形参用指针。特点:将实参的

15、地址值传递给形参的指针,使形参指针直接指向实参的变量,于是可以通过改变形参所指向的变量值来改变实参值。实现机制:将实参的地址赋给对应的形参指针时,使形参指针指向实参变量值。(3) 引用调用:要求形参用引用,实参用变量名,形参的引用便是实参变量的别名。特点:用具有传址调用提高运行效率的优点,又具有可通过改变形参来影响实参的特点。因此,可以用引用调用来替代传址调用,因为引用调用的实现方法比传址调用的实现方法更简单明了。所以C+编程中常用引用调用,而少用传址调用。知识点7函数的参数设置默认值在C+中 ,允许在函数说明或定义时给一个或多个参数指定默认值。但在一个指定了默认值的参 数的右边不可以出现没有

16、指定默认值的参数。在调用函数时,编译器按从左到右的顺序将实参与形参结合,当实参数目不足时,编译器也将按同样的顺序用说明或定义中的默认值补足所缺少的实参。在 给某个参数指定默认值时候,可以是一个值,也可以是任意复杂表达式。例如:voidinit(inti=0, int j=0);知识点8函数的重载函数重载是指同一个函数名可以对应着多个函数的实现。函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要从函数参数的个数和类型上来区分。例如,可以给函数add()定义两个函数实现,该函数的功能是求两个操作数之和,其中,一个是实现两个int之和,一个是实现

17、两个float型数之和。知识点9内联函数C+引入内联函数,节省了调用开销,大大地提高了函数的执行效率。 内联函数与一般函数区别之 处仅在于函数调用的处理,一般函数进行调用时,要将程序执行权转到被调用函数中 ,然后再返回到 调用它的函数中;而内联函数在调用时是,是将调用表达式用内联函数体直接替换。将一个函数定义为内联函数,只要定义时,在函数名前加inline即可。注意:内联函数体内不允许有开关语句和循环语句,切定义必须出现在内联函数第一次被调用之刖。知识点10递归函数在C+编程中,允许使用函数的递归调用,因为递归是一种非常有用的程序设计技术。递归就是某一种事物直接或间接地调用自己。一个函数直接或

18、间接地调用自身,便构成了函数的递归调用,前者称为直接递归调用,后者称为间接递归调用。 在一个函数中调用自身函数的函数称为递归函数。递归函数在执行时,弓I起一系列的调用和回代的过程。递归过程不应无限制地进行下去,应当在调用有限次后就达到递归调用的终点,得到一个确定的值,然后进行回代。回代的过程是从一个已知值推出下一个值。任何有意义的递归总是由递归形式和递归终止条件两部分构成。掌握:数组作为函数参数和数组元素作为函数参数调用方式?答:数组作为函数参数和数组元素作为函数参数是不同的。它们虽然都属于传值调用,但是数组作为函数形参时实参用数组名,它是一个地址值,对应的是传址调用,不拷贝副本,实参形参共用

19、同一个数组空间。数组元素作为函数参数是传值调用,实参用的是数组元素值,拷贝副本给形参。因此,两者在调用机制上是有区别的。掌握:指针作为函数参数调用方式?知识点11变量的作用域与存储类型那个(1)标识符的作用域规则是什么?在C+中,作用域的种类有哪些?答: 标识符的作用域规则规定标识符在定义它的范围内是可见的, 而在该范围之外是不可见的。C+十语言中作用域从大到小依次有程序级的、文件级的、类级的、函数级的、程序块级的。( 2)关于重新定义标识符的作用域规定是什么 ?什么是可见 ?什么是不可见 ?答: 段中:重新定义标识符的作用域规定是外层的变量被隐藏,内层变量是可见的。例如,在下列程序int f

20、un(int x)int a=5:int a=8在函数体内定义了变量 a,初值为5,又在函数体内的一个分程序中重新定义了变量。 ,其初 值为&在内层(即分程序)中可见的是分程序中定义的初值为 8的a,而函数中定义的初值为 5的a 被隐藏了。出了分程序后,外层的 a 又被恢复。这里,可见是可以访问和操作,不可见是不可以访问和操作。隐藏是指不可见,但是存在。( 3)什么是局部变量 ?什么是全局变量 ?答:凡是定义在函数体内或分程序内的变量称为局部变量,局部变量的作用域比较小,或者是函 数级,或者是程序块级。局部变量一般包含有自动类、寄存器类和内部静态类以及函数的形参。凡是定义在函数体外的变量称为全

21、局变量。 全局变量有作用域为整个程序的外部类变量和作用 域为定义它的文件的外部静态类变量两种。( 4)什么是自动存储类变量 ?什么是寄存器存储类变量 ?答:自动存储类变量是指那些在函数体内或分程序内定义的,并且被存放在内存的动态存储区的变量,因此寿命较短。寄存器存储类变量的作用域和寿命与自动存储类的相同,它们之间的区别在存放地点不同, 存放在CPU的通用寄存器中的变量称为寄存器变量,使用这类变量时存取速度要比其他变量快得多。( 6)什么是静态存储类变量 ?内部静态类和外部静态类变量有何区别 ?答:静态存储类变量是使用 static 关键字修饰的,并且具有较长寿命的变量。静态存储类变量有两种:一

22、种是作用域与自动存储类相同的内部静态变量;另一种是定义在函数体之外,作用域在定义它的文件内,并从定义时起的外部静态类变量。这两类变量寿命相同,都被存放在内存的静态存储区。静态存储类变量与外部存储类变量都是长寿命的, 它们的区别是作用域不同, 内部静态存储类 变量的作用域是函数级或程序块级的,而外部静态存储类变量的作用域是文件级的。简单地讲,内部静态存储类变量被定义在函数体内,外部静态存储类变量被定义在函数体外。( 7)什么是外部存储类变量 ?它的定义和说明是一回事吗 ?答:外部存储类变量的作用域最大,它的作用域是整个程序,包括该程序的任何一个文件。它 的寿命是长的,被存放在内存静态存储区。外部

23、变量被定义在某个文件中,但它在整个程序中都可 见。外部类变量的定义和说明是两回事。定义外部类变量在函数体外的某个文件中,定义时不加 任何修饰符。在一个程序中,相同名字的外部类变量只能定义一次。说明外部类变量时,可在函数 体外,也可在函数体内,并且前边要加修饰符 extern ,在一个程序中可以根据需要对同一个外部类 变量说明多次。第5章数组知识点1数组的概念数组是一种用一个名字来标识一组有序且类型相同的数据组成的派生数据类型,它占有一段连续内存空间。数组的特征是(1)数组名;(2)数组各元素的类型;(3)维数(即标识数组元素所需的下标个数 ); 数组大小(即可容纳数组元素的个数 )。注意:使用

24、数组之前必须用声明语句指明数组的上述4个特征。知识点2 一维数组1.定义一维数组也称向量,它是由具有一个下标的数组元素组成的数组,它的定义形式为:类型数组名大小;其中,方括号为下标运算符,具有最高优先级和从右向左结合性。2初始化初始化表达式按元素顺序依次写在一对花括号内。花括号中的数组元素之间以逗号分隔。初 始化时可以不指定数组的大小,编译器会根据初始化列表来确定数组的大小。但只给出部分元素初 始化时,就要指定数组大小。 只将部分元素初始化后,其他元素的初始化值隐含为 0。3访问数组元素访问数组元素的语法格式为:其中,表达式是非负的整型表达式,也就是数组的下标,数组下标是用来指定所要访问的 数

25、组中的元素的位置。注意:数组下标是从 0开始的。知识点3二维数组二维数组也称二级向量,我们可以把二维数组看做一个其元素为一维数组的一维数组。定义二 维数组的一般格式为:mn;二维数组中的每个元素要用两个下标来表示,前一个为行下标,后一个为列下标。因此,规定 m表示二维数组的行下标的大小,n表示二维数组的列下标的大小。其中,这两个下标的取值范围都是从0开始,而不是从1开始的。与一维数组一样,二维数组也可在定义的同时进行初始化,方法也是类似的。举例:int a22=1,1,3,2;但需要注意的是,如果对全部元素赋初值,一维数组能根据赋的初值的个数自动计数以确定数组的大小,所以定义的时候可不指定第一

26、维的大小,但第二维的大小是不可以省略的。知识点4字符数组1概念字符数组就是一个字符类型的数组,其中每一个元素存放一个字符。字符数组也称字符串。C+规定,字符数组的最后一个元素一定是0。例如,字符数组存储字符串 :” Hello World! ”的语句形式为:char str= ” Hello!world ! ”;但系统会自动在其末尾加一个空白字符0。 也 就是说字符数组存储一个字符串比实际使用的字符串要多一个字节。2常用字符串函数C+提供了二系列字符串处理函数,这些函数都包含在cstri ng.h头文件中。(1)strcat(字符串1,字符串2)。此函数是字符串连接函数,它的功能是把两个字符串

27、连接起来。具体方法是把字符串2连接到字符串I的末端,并将结果存放到字符串1中。注意:存放结果字符串的数组的空间要确保足够大。两个字符串连接后,前一个数组最后的字符0 就消失了。(2)strcpy(字符串1,字符串2)。此函数是字符拷贝函数,它的功能是把一个字符串中的字符拷贝到另一个字符串变量中。具体方法是把字符串2中的字符拷贝到字符串1中。注意:要确保存放结果的字符串1的空间足够大。(3)strcmp(字符串1,字符串2)。此函数是字符串比较函数,它是用来比较字符串的。比较方法是:若两字符串相等(匹配),返回0( “假”);若字符串1在字典顺序上比字符串2大,则返回一个正数;若字符串1在字典顺

28、序上比字符串2小,则返回一个负数。(4)strlen(字符串)。此函数是字符串长度函数,它的功能是求字符串的长度。函数的值为字符串中不计 0的字符的个数。(5)strstr(字符串1,字符串2)。此函数是字符串查找函数,它的功能是在一个字符串中查找子串。查找方法毫在字符串1中从左边开始查找字符串2,若查找成功,返回字符串2在字符串I中第一次出现的位置否则返回NULL若字符串2为”,则返回字符串I。第6章指针与引用知识点1指针与地址指针是一种非常重要的派生数据类型,用它可以构造复杂的数据结构。具有指针类型的变量称为指针变量,一个指针变量所存储的信息是一个对象在内存中的地址。通过指针变量可以间接地

29、访问对象。指针变量声明的一般格式为:数据类 *变量名其中,数据类型 是指针所指对象的类型,*和&是是指针所使用的两个特殊运算符。(1) &是取地址运算符(2) *是间接引用运算符,它是获得对象的值,并且它要求其操作对象是一个指针。在使用任何指针变量之前必须首先给它赋一个所指合法具体对象的内存地址值。知识点2指针运算指针是一种数据类型,应具有无符号整数的值。由于地址本身的特征,也给指针运算带来一 些限制。一般来说,允许指针有4种运算:(1) 赋值运算。可以将一个个指针所指向的变量地址值赋给它,也可以将一个数组的地值或者一个函数在内存中的入口地址赋给所对应的指针,还可以将一个已被赋值的指针赋给另一个相同类型的指针。int a,pa=&a;女口,指向一维数组int a10,*p;p=a;a=&a0,数组名为地址常量,首元素的地址女口,指向二维数组int b23,(*p)3p=b; b=&b0,数组名为地址常量,首行的地址女口,指向一个字符串char *p= ” hellO ” ; /指向字符串的首字符地址女口,指向多个字符串char *p3=“hello ” , ” world ” , ” am” ;(2) 指针与整数相加、减运算。例如:P+(3) 在一定的条件下,两个指针可以相减

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论