C++考前复习简略知识点
- 格式:doc
- 大小:40.00 KB
- 文档页数:13
《C程序设计》复习资料知识点总结C程序设计复习资料知识点总结C程序设计是计算机科学与技术专业中的一门基础课程,掌握好相关知识点对于学习和实践都具有重要的意义。
本文将对C程序设计的一些重要知识点进行总结和归纳,旨在帮助读者更好地复习和掌握相关内容。
一、基础概念1. 编程语言:简述编程语言的作用和分类,并着重介绍C语言的特点和优势。
2. 算法与流程控制:详细介绍算法的概念、设计方法和常见的流程控制结构,如顺序结构、分支结构和循环结构。
二、数据类型与运算符1. 数据类型:介绍C语言中的基本数据类型,如整型、浮点型和字符型,以及数组和指针等扩展数据类型。
2. 运算符:列举C语言中常用的算术运算符、逻辑运算符和关系运算符,并给出相应的使用示例。
三、函数与模块化编程1. 函数定义与调用:详细介绍函数的定义、声明和调用方法,并说明函数的重要性和作用。
2. 函数参数传递:介绍传值与传址的区别和应用场景,并对函数参数传递的相关知识进行解析。
3. 模块化编程思想:强调模块化编程的优点和原则,并介绍如何将程序分解为多个模块以便于维护和管理。
四、数组与字符串1. 数组的定义与使用:详细介绍一维数组和多维数组的定义、初始化和操作方法,并给出相应的示例代码。
2. 字符串的处理:介绍字符串的定义、初始化和常见操作方法,如字符串长度计算、字符串拷贝和字符串连接等。
五、文件操作1. 文件的打开与关闭:介绍如何在C语言中打开和关闭文件,并说明不同打开方式的区别。
2. 文件读写操作:详细介绍文件的读取和写入方法,并给出读写文件的示例代码。
六、指针与动态内存管理1. 指针的概念与应用:详细介绍指针的定义和使用方法,以及指针与数组、字符串之间的关系。
2. 动态内存分配:介绍动态内存分配的概念和原理,并说明动态内存分配的优势和注意事项。
七、结构体与文件操作1. 结构体的定义与使用:详细介绍结构体的定义和使用方法,并说明结构体与数组、指针之间的关系。
c语言理论考试要点C语言作为一门广泛使用的编程语言,是计算机科学与技术专业重要的基础课程之一。
在C语言的学习中,理论考试是一种常见的评估方式。
下面将介绍C语言理论考试的要点,帮助读者准备和应对这种考试形式。
一、基础知识部分C语言理论考试中的基础知识部分是考察考生对C语言基本概念、语法结构、数据类型等方面的了解和掌握情况。
以下是该部分的要点:1. 了解C语言的起源和发展历程;2. 熟悉C语言的关键字和保留字,如if、for、int等;3. 掌握C语言的基本数据类型,包括整型、浮点型、字符型等;4. 理解C语言的运算符,包括算术运算符、关系运算符、逻辑运算符等;5. 熟悉C语言的控制语句,包括条件语句、循环语句等;6. 理解C语言的函数和数组的概念和使用方法。
二、程序设计部分C语言理论考试中的程序设计部分是考察考生对C语言程序设计的能力和思维方式的了解和掌握情况。
以下是该部分的要点:1. 掌握C语言的基本程序结构,包括头文件、函数定义、函数调用等;2. 理解C语言的变量和常量的声明和使用方式;3. 熟悉C语言的运算符优先级和表达式的理解;4. 熟悉C语言的数组和指针的使用,包括数组的定义和操作、指针的定义和使用等;5. 理解C语言的字符串处理函数和库函数的使用,如strcpy、strlen 等;6. 熟悉C语言的文件操作,包括文件的打开、读写和关闭等函数的使用。
三、算法与数据结构部分C语言理论考试中的算法与数据结构部分是考察考生对常见算法和数据结构的了解和应用能力。
以下是该部分的要点:1. 理解算法的概念和基本特性,包括正确性、可读性、高效性等;2. 熟悉常见的排序算法,如冒泡排序、插入排序、选择排序等;3. 掌握常见的查找算法,如线性查找、二分查找等;4. 了解栈和队列的概念和实现方式;5. 理解链表的概念和实现方式,包括单链表、双链表等;6. 了解二叉树的概念和基本操作,如遍历、查找等。
四、编程风格与调试技巧部分C语言理论考试中的编程风格与调试技巧部分是考察考生对编程规范和调试方法的理解和掌握情况。
C语言考试复习要点C语言是一种广泛应用于计算机编程领域的高级编程语言。
对于需要参加C语言考试的学生来说,了解重点复习的内容非常重要。
本文将讨论C语言考试的复习要点,帮助读者更好地准备考试。
一、基础概念与语法1. 数据类型:包括整型、浮点型、字符型等,了解它们的范围、存储空间和使用方法。
2. 变量与常量:掌握变量的声明、赋值和使用,了解常量的概念以及如何定义和使用。
3. 运算符:包括算术运算符、关系运算符、逻辑运算符等,了解它们的优先级和使用规则。
4. 控制语句:包括条件语句(if-else语句)、循环语句(for循环、while循环)和跳转语句(break语句、continue语句、return语句)等。
掌握它们的语法和用法,能够编写简单的流程控制程序。
二、数组与字符串1. 数组:了解数组的定义和使用,包括一维数组和多维数组,掌握数组的初始化、访问和遍历等操作。
2. 字符串:了解字符串的概念和字符数组的使用,能够实现字符串的输入、输出以及常见的字符串操作(比如拼接、复制、比较等)。
三、函数与指针1. 函数:了解函数的定义和使用,包括函数的声明、调用和返回值等。
掌握函数的参数传递方式(值传递、地址传递),能够编写简单的函数以及函数调用的程序。
2. 指针:理解指针的概念和作用,了解指针与数组、指针与函数的关系。
掌握指针的声明和使用,能够编写简单的指针操作程序。
四、文件操作1. 文件读写:了解文件的打开和关闭操作,能够进行文件的读取和写入。
掌握文件读写的基本函数(如fopen、fclose、fread、fwrite等)的使用。
2. 文件指针:了解文件指针的概念和作用,包括文件位置指针和错误指示指针。
能够使用文件指针进行文件的读写操作。
五、综合应用1. 综合编程:能够根据题目要求,运用C语言的基础知识和技巧,编写可以实现特定功能的程序。
2. 调试技巧:掌握常见的程序调试技巧,能够根据错误提示信息进行程序错误的定位和修复。
C语言考试知识点C语言作为一门广泛应用于计算机编程的语言,掌握其相关知识点对于计算机科学专业的学生来说至关重要。
在C语言的学习和考试中,有一些核心知识点是必须掌握的。
本文将按照逐步思考的方式,介绍C语言考试的一些重要知识点。
1.数据类型在C语言中,数据类型是非常重要的概念。
掌握不同数据类型的定义和使用方法是编写高效程序的基础。
常见的数据类型包括整型、浮点型、字符型和指针类型等。
在考试中可能会涉及到数据类型的声明、转换和运算等方面的问题。
2.运算符和表达式通常,C语言的考试会涉及到运算符和表达式的相关问题。
了解运算符的种类和优先级是至关重要的。
掌握算术、关系、逻辑和位运算符等的使用方法,并能够正确理解表达式的求值过程,对于解题非常有帮助。
3.控制语句 C语言中的控制语句主要包括条件语句和循环语句。
在考试中,你可能需要写出使用if、switch、for、while或do-while等语句的程序。
理解这些语句的工作原理,并能够正确运用它们来解决问题,是考试中的重要内容。
4.数组和指针数组和指针是C语言中的重要概念。
对于数组,你需要了解如何声明、访问和操作数组元素。
对于指针,你需要理解指针和内存地址之间的关系,以及如何使用指针来操作变量和数组。
在考试中,可能会涉及到数组和指针的传递、动态内存分配等问题。
5.函数函数是C语言中的基本构建块之一。
在考试中,你可能会需要编写函数来实现某种功能。
理解函数的定义、参数传递、返回值和递归等概念是非常重要的。
掌握如何正确定义和调用函数,并能够设计出高效的函数,对于解答考试题目非常有帮助。
6.文件操作 C语言中的文件操作主要包括文件的打开、读写、关闭等功能。
了解如何使用标准库函数来进行文件的操作,并能够正确处理文件指针、错误处理和文件结束标志等问题,对于考试中的文件处理题目非常有帮助。
7.数据结构在C语言考试中,可能会涉及到一些基本的数据结构问题。
例如,你可能需要编写链表、栈、队列或树的相关操作。
C语言常考的知识点C语言是一门广泛应用于计算机科学和软件开发领域的编程语言。
在学习和掌握C语言时,存在一些常见的知识点,这些知识点经常在考试和面试中出现。
以下是C语言的一些常考知识点:1.数据类型:C语言中有基本数据类型(整型、浮点型、字符型等)和自定义数据类型(结构体、枚举等)。
了解和掌握各种数据类型的特性和用法。
2.变量和常量:了解变量的声明和定义、作用域、存储类别(自动、静态、寄存器、外部)等。
了解常量的分类和使用。
3.运算符:了解算术运算符、关系运算符、逻辑运算符、位运算符等各种运算符的用法。
4. 控制结构:掌握顺序结构、选择结构(if-else、switch-case)和循环结构(while、do-while、for)等的使用。
5.函数:理解函数的定义和调用、形参和实参、递归函数等概念。
了解函数的返回值、局部变量和全局变量的作用。
6.数组:了解一维数组和二维数组的定义、初始化、访问等。
掌握数组元素的排序、查找等操作。
7.字符串:了解字符串的定义、初始化和操作。
理解C语言中字符数组和字符串常量的区别。
8.指针:掌握指针的定义、初始化、访问等操作。
了解指针与数组、指针与函数的关系。
9.结构体:了解结构体的定义、初始化和访问。
掌握结构体数组和结构体指针的使用。
10.文件操作:了解文件操作的基本步骤,包括打开文件、读取文件、写入文件和关闭文件。
11.预处理器:了解宏定义、条件编译、包含文件等预处理指令的使用。
12. 动态内存分配:掌握动态内存分配函数malloc、calloc和free的使用。
13.指针与字符串操作:了解字符串比较、复制、连接等操作的函数使用。
14.结构体与文件操作:了解如何将结构体数据写入文件和从文件中读取结构体数据。
15.位操作:了解位操作运算符的使用,包括位与、位或、位异或等。
16.递归:掌握递归函数的使用和递归思想的应用。
17.链表:理解链表的概念和基本操作,包括插入、删除、遍历等。
C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。
2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte是指字节, 一个字节 = 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。
3、每个C语言程序中main函数是有且只有一个。
4、在函数中不可以再定义函数。
5、算法:可以没有输入,但是一定要有输出。
6、break可用于循环结构和switch语句。
7、逗号运算符的级别最低,赋值的级别倒数第二。
第一章C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。
2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。
3、一个C语言程序有且只有一个main函数,是程序运行的起点。
第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。
2、每个C语言程序写完后,都是先编译,后链接,最后运行。
(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。
(常考!)第三节、标识符1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了2、标识符分为关键字、预定义标识符、用户标识符。
关键字:不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
C语言复习概念要点C语言是一种十分流行的程序设计语言,广泛应用于系统编程、应用软件开发等领域。
在学习和使用C语言的过程中,掌握其基本概念和要点是非常重要的。
下面我将对C语言的一些复习要点进行总结。
一、基本概念:1.数据类型:C语言包含基本数据类型和构造数据类型。
基本数据类型包括整型、浮点型、字符型等;构造数据类型包括数组、结构体、共用体等。
2.变量:在C语言中,变量是用来存储数据的,需要在使用之前进行声明并赋初值。
3.运算符:C语言支持多种运算符,包括算术运算符、关系运算符、赋值运算符等。
4. 控制语句:C语言提供了多种控制语句,如if语句、switch语句、while语句、for语句等,用于实现程序的流程控制。
5.函数:函数是C语言中的基本模块,用于封装可重用的代码块,并通过参数和返回值实现数据交互。
6.数组:数组是相同类型数据的集合,通过下标访问元素。
数组在C语言中是一种重要的数据结构。
7.指针:指针是保存变量地址的特殊数据类型,可以用于直接访问内存中的数据,实现高效的数据操作。
8.文件操作:在C语言中,通过文件操作函数可以实现对文件的读写操作,实现数据的持久化存储和处理。
二、要点复习:1.注意数据类型的选择:在编写程序时,需要根据数据的实际情况选择合适的数据类型,以避免数据溢出或精度丢失等问题。
2.变量的作用域和生存周期:变量的作用域取决于它的声明位置,生存周期取决于它的存储类型。
3.运算符的优先级和结合性:需要熟悉各种运算符的优先级和结合性规则,以正确理解和编写复杂表达式。
4.控制语句的嵌套和使用:掌握各种控制语句的嵌套和结构,保证程序的逻辑正确性和执行效率。
5.函数的参数传递和返回值:注意函数参数传递的方式和影响,以及返回值类型的规定和使用。
6.数组的下标和越界问题:避免数组越界访问,注意数组下标的范围和使用方式。
7.指针的运用和安全性:指针操作要谨慎,避免出现空指针引用、野指针等问题。
C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
C语言知识点复习梳理C语言是一种通用的高级编程语言,它是许多编程新手的第一门语言。
复习C语言的知识点可以帮助我们巩固基础,为更深入的学习和应用打下坚实的基础。
接下来,我将对C语言的一些重要知识点进行梳理和复习。
1.语法结构:C语言的语法结构主要包括变量、数据类型、运算符、控制语句和函数等。
变量表示存储数据的容器,数据类型指定了变量可以存储的数据的类型。
运算符用于进行各种运算操作。
控制语句用于控制程序的执行流程。
函数是程序的基本单元,用于封装可重复使用的代码块。
2.基本数据类型:C语言提供了一些基本数据类型,包括整型、浮点型、字符型和指针类型等。
整型包括short、int、long和long long等;浮点型包括float和double等;字符型包括char类型;指针类型用于表示内存地址。
3.常量和变量:常量是程序中固定不变的值,可以使用const关键字进行定义;变量是可以改变的值,使用变量可以用于存储和操作数据。
4.运算符:C语言提供了一系列的运算符,包括算术运算符、关系运算符、逻辑运算符、赋值运算符和位运算符等。
运算符用于对数据进行各种运算操作。
5.控制语句:C语言提供了三种基本的控制语句:顺序结构、分支结构和循环结构。
顺序结构按照代码的先后顺序执行;分支结构使用if语句和switch语句根据条件进行不同的执行分支;循环结构使用for循环、while循环和do-while循环等进行重复执行。
6.数组和字符串:数组是一种用于存储多个相同类型数据的容器,可以通过索引访问数组中的元素。
字符串是字符数组的特例,用于存储和操作文本数据。
7.函数:函数是C语言中的基本代码块,用于封装可重复使用的代码。
函数可以接受参数并返回值,我们可以根据需要调用不同的函数来完成特定的任务。
8.结构体和联合体:结构体是一种可以包含多个不同类型成员的数据类型,用于组织和管理相关数据;联合体是一种可以持有不同类型数据的数据类型。
C语言考试复习要点第一篇:C语言考试复习要点C语言考试复习要点:一.题型:1.选择题——最基本的知识点,概念——共20分2.程序运行结果分析——10道程序题——共30分(来源于课本例题和作业,复习的重点是多看课本程序和作业程序)3.程序填空题——一个完整的程序挖掉一些空格——共四个程序,10个空格——共30分4.编程题——有两道——一道课后作业,比较容易,8分——另外一道比较难,12分——共20分二.了。
2.第五章到第八章的内容是核心内容,要重点复习,题型覆盖所有题目。
3.第九章主要复习宏定义和宏替换。
4.第十章考的不多,集中在10.2和10.3两节。
复习策略:1.第一章到第四章的内容比较少,基本是考概念一些小题,以选择题为主,浏览一下就行第二篇:小班下学期语言复习要点小班下学期语言复习要点《妈妈》儿歌P5妈妈下雨了,别让小松鼠淋着,松鼠妈妈用她的大尾巴,给小松鼠撑着伞。
老鹰来了,别让小鸡给老鹰抓走,母鸡妈妈用她的翅膀,把小鸡紧紧地护住。
天黑了,别让宝宝害怕,妈妈用她好听发的声音,给宝宝哼着摇篮曲。
《拔萝卜》P24重点:能重复里边的对白。
“哎呦,哎呦”拔呀拔,还是拔不动。
“小姑娘,小姑娘。
快来帮忙拔萝卜!”《熊猫的客人》P52重点:知道小兔有礼貌。
小熊没有礼貌。
《小猴请客》P55重点:模拟对话,如何招待客人!《迎春花》重点:知道春天的花——迎春花迎春花,开黄花,朵朵张开小嘴巴;它是公园小号手,迎着春天吹喇叭:滴滴答,滴滴答,它把春天迎来啦!《花路》P83重点:理解故事内容以及里边的(问话)。
《毛毛虫》P90重点:学习量词:个、根、颗、块、片:学说词语:我吃了······《坐火车》P96重点:看幼儿画册复习词语:绿油油、金黄色、钻、瞧。
《春风》P100重点:春风(儿歌)春风吹,芽儿发,吹绿了柳树,吹红了桃花,吹来了蝴蝶,吹醒了青蛙,吹得小雨轻轻地下,我们一起去种花。
C++考前复习简略知识点第五章数组与指针1,数组不能进行整体访问和处理,比如要输出数组,不能使用cout<<get[ ];这样的语句,而要采用循环2,数组做为函数的参数时,一维数组[ ]中是空的,多维数组只可省略最高维3,再次强调,有n个数据的数组,下标是从0到n-1,所以循环语句应该写为for(i=0; i<n;i++)cout<<a[i];不是<=4,在对指针进行操作前,一定要确定指向,否则产生严重后果5,指针常量和常量指针指针常量例:int *const p;指针的指向不能改变,但是值可以变常量指针例:const int *p;指针的指向可以改变,但是那个值不能改变这个有点不太好记忆,常量指针重点是常量,值不能变6,this指针是指向对象的,this指针不一定都要写成显示的,静态成员函数没有this指针7,数组名是首元素的地址,大家都知道,但是不能用a++这样的形式来指向a[1],因为数组名可以理解为是一个指针常量,指向不能改变。
8,指针相减,如果*p1和*p2是分别指向a[2]和a[6]的指针,那么p2-p1就等于4,中间元素的个数,还有,指针相加是无意义的9,指向多维数组的指针比较复杂,还是记几个例子吧(用->代表文字指向,但是语法上是错的哈)Int b[4][4] b+3->b[3]这里我的理解就是二维数组是由一维数组作为元素的数组,所以指向的是整个第三行*(b+3)->b[3][0] *(*(b+3))=b[3][0]*(b+3)+3->b[3][3] *(*(b+3)+3)=b[3][3]理解很重要。
10,指针做函数参数,实参必须是地址或者数组名;引用做函数参数,实参必须是变量或对象本身。
实参为数组的时候,只能用指针而不能引用,因为数组的引用不存在11,函数的返回值如果是指针的话,那么它所指向的那个数据生命期不应该只在函数中,所以应该是全局变量等(我只知道个全局变量。
)12,一些比较常用的字符串处理函数strcat---catenate(连接) strcmp----compare (比较)strcpy---copy(复制) strlen---length(长度)头函数名#include<cstring>当然处理字符串用string类是最方便的啦,头函数名#include<string>第六章模板与数据结构13,模板参数名要是正确的标识符,以字母或_开头,包含字母、数字、字符,不会与会变蓝色的关键字重名14,对半查找法,关键的地方就在于low=mid+1 和high=mid-1,以及最开始的mi d= -1赋初值,升序对半插入排序法类似15,升序直接插入排序法,从第一个开始循环,与它前面所有的元素一一比较,直到找到第一个比它小的,排它后面。
注意,查找与移动同时进行16,冒泡排序法,两两比较,依次将小的数推前,注意布尔数noswap的用法,开始置t ure,有交换的话置false,判断循环的条件就是if(noswap)17,直接选择排序,从第一个开始循环,找出它后面的最小的那个元素,和其交换18,指针数组,例*name[7],每个元素都是一个指针,比二维数组节省空间a[3][5]的二维数组,则要浪费4个存储19,当一个函数需要将另一个函数作为参数的时候,必须借用指向函数的指针,因为函数本身不可以做参数定义一个指向函数的指针,并初始化,例int (*pf)(char*,char*)=scopy;其中函数名scopy就是该函数的入口地址,类似于数组名是数组存储区域的开始地址20,指向类成员的指针,必须指明属于哪个类,例Float(Student::*pf)()=Student::SetScore;则该指针指向了Student类里的成员函数SetScore,语句student1.*pf就相当于调用了student1.SetScore同样也有指向数组成员的指针21,由于静态成员函数没有this指针,所以指向静态成员函数的指针是普通指针第七章动态内存分配22,new运算符返回的是一个指向所分配类型变量(对象)的指针,必须显式初始化。
例int *p=new int(5);P为指针变量名,5是初始化式23,delete释放的是指针所指的目标的内存空间,但指针本身依然存在,该指针本身所占内存空间并未释放24,撤销动态数组的空间时,注意方括号[]的使用delete []p 撤销整个数组delete p 只撤销数组的第一个元素25,用动态分配来定义数组的最大优点就是,大小可以根据实际需要来更改,不像静态分配,经常“大开小用”,浪费内存空间例cout<<”请输入动态数组的元素个数”<<end l;Cin>>n;p=new char[n]; 根据实际需要申请内存空间由于n的大小随时改变,所以没有对应的初始化式,不可对数组进行初始化,与静态数组不同26,动态分配申请失败,new操作符就返回一个空指针NULL,撤销了目标后,p本身并没有消失,并且成为了一个没有指向任何有效地址的空悬指针,建议将p置空NULL 27,delete要跟new配套使用,如果new返回的指针值丢失,那么分配的自由存储空间就无法回收,造成内存泄漏。
重复释放的话也是危险的,第一次释放后该空间可能已经分配给新的对象,再一次释放则会使新对象丢失,所以释放后应该把p置空28,在哪个域使用的new建立的空间,则应该在相同的域用delete进行释放,例,在函数内建立,而在函数外释放是很容易出错的29,通过new建立的对象要调用构造函数,通过delete删除对象也要调用析构函数由于构造函数有参数,所以new后面的类类型也可以有参数,这些参数即构造函数的参数。
例CGoods*pc,*pc2;Pc=new CGoods(“夏利2000”,10,118000);调用三参数的构造函数30,但是创建数组时,则没有参数,只能调用默认的构造函数,例pc2=new CGoods[n];(pc2在29中已定义)调用了n次默认构造函数,如果没有默认的构造函数,则不能创建对象数组31,为了更好的解释浅复制和深复制,先介绍一般的复制构造函数,简单说就是用同一个类的对象来初始化另一个对象,例Student::Student(Student &c),其参数采用的是同类对象的引用,必须使用一个已产生的同类对象做实参。
功能是依次完成对象中对应成员数据的复制例CRect::CRect(CRect &c){left=c.left;top=c.top;right=c.right}32,浅复制,有的对象中不只是有数据成员,还有指针成员,则类的对象进行数据复制时,就会出现不同对象的同一指针成员指向同一个由new动态生成的存储区域,如在不同路口指向同一建筑的两个路牌,当用delete把“路牌1”(*p1)所指向的“建筑”(自由存储空间)撤销后,“路牌2”(*p2)所指向的“建筑”(……空间)实际已经不存在了,再用delete撤销该“建筑”(……空间)则会产生错误33,为了解决浅复制的问题,就有人想出了深复制。
重新定义复制构造函数,给每个对象分配一个独立的自由存储区,即每个路牌指向的都是独立的建筑,必须自定义复制构造函数和析构函数以释放动态分配的内存34,析构函数的调用顺序和构造函数是相反的,例分别对对象S1 S2 S3调用构造函数,则按S3 S2 S1的顺序调用析构函数35,链表,建立在自由存储区中,表头head在使用中必须妥善保管,不能丢失,否则整个链表会丢失,内存也会发生泄漏36,释放所有结点的语句p1=head;head=p1->next;delete p1;其中head=p1->next是将下一个结点作为表头,则可以依次从前删除结点,直到最后一个37,在书本244页的例7.8中,有一个头文件#include<cassert>,查阅百度百科后得知,这是“断言”的头文件,在245页的第5行中,使用了断言assert函数,该函数的作用就是判断是否符合条件,不符合就中止程序,该函数的缺点是,使用多了会极大的影响程序的性能,增大程序开销38,栈是在一头进,同一头出的线性表,有“先进后出”的特点。
队列就是在一头进,另一头出的线性表,特点是“先进先出”。
二叉树就不说了。
我也不愿意看了。
第八章继承与多态39,派生类完全保存了基类的数据成员和函数成员(除了构造函数和析构函数),并且还新增了自己的成员40,派生出的新类同样可以做为基类派生出新的的派生类,一个基类也可以派生出多个派生类,打个比方。
在单继承中,一个父亲可以有很多个孩子,而孩子又会有孩子,则父亲是直接基类,祖父或曾祖父等更高辈分的就是间接基类。
多重继承中就是一个孩子有多个父亲。
41,但是有些基类的成员在派生类中是不需要的,则新添加的派生类成员中包括通过屏蔽作用取代基类成员的更新成员,做法是在派生类中声明一个和某个基类成员同名的成员,则派生类中的成员屏蔽了基类同名成员,如果成员函数,参数表和返回值也完全一样,则称为同名覆盖,否则为重载42,发展新函数才有了派生的意义,否则只是基类的简单复制,人类就没有进化了。
新成员必须与基类成员不同名。
43,派生类中的构造和析构函数必须要重写,因为这两种函数没有继承,不管基类中的这两个函数是否一样试用于派生类,都要重写44,继承方式是记忆比较容易混淆的。
下面用比较直观的来增强记忆(1)公有派生:父亲的公有文件,儿子和外人都可以看,私有文件只有父亲一个人能看(只能通过基类中的公有成员函数去访问基类的私有成员),保护文件只在家族内部传看,父亲儿子都可以看,但是外人看不到(公有和保护成员在派生类中的属性不变)(2)私有派生:儿子依旧可以看到父亲的公有和保护文件,私有文件也依旧不能看,和公有派生不一样的地方是,所有的成员在派生类中都变成了私有的,即父亲把所有文件都交给了儿子保密,因此外人是不能看到父亲的任何文件的(类外只有通过派生类的公有成员函数去访问基类的成员)(3)保护派生:基类的私有函数依旧是派生类的私有函数,不可直接访问,而基类中的公有的和保护成员全部为派生类的保护成员,在派生类中可以直接访问。
从这里看,和私有派生没什么区别。
但如果是多层派生,那么这个派生类又做为新的基类,派生出了新的派生类,就有区别了。
比方说是,私有派生,儿子只能看到父亲的文件,但在保护派生中,儿子可以看到祖父甚至曾祖父曾曾祖父的文件。
45,派生类的构造函数,不继承并不代表不利用,只是把基类的构造函数当作派生类的构造函数的一部分,参数总表中要有类型名,而后面的参数名表则不需要,因为其是实参表如果基类没有定义构造函数,则派生类也可以不定义,但是一旦基类定义了带有形参表的构造函数,派生类就应当定义构造函数46,析构函数是先析构派生类中的成员,最后析构基类的成员47,虚基类的作用就是在多重继承中,如果有一个基类是多个派生类的基类,那么这个基类就会被建立多次,浪费空间,解决办法就是将这个共同基类设置为虚基类,写法是在派生的时候,在基类名前加上virtual.例class Employee:public virtual Person {……};48,有关虚基类的构造函数,调用的首先是虚基类的构造函数,首先建立虚基类,而且只建立一次,如果是非虚基类的话,按照常理,是应该建立多次的,而且是它派生了几个类,就应该建立几次49,赋值兼容规则:再多谈谈公有派生,因为其是应用最广泛的主流.。