C语言基础知识笔记.doc_第1页
C语言基础知识笔记.doc_第2页
C语言基础知识笔记.doc_第3页
C语言基础知识笔记.doc_第4页
C语言基础知识笔记.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、 关键字:static 生存期:整个程序运行过程中 作用:变量的值在函数调用结束后不消失而保留原值,即它占用的存储单元不释放,在下一次调用该函数时,此变量已有值。 说明:(1)对静态变量只赋初值一次,以后每次调用函数时不重新赋初值,而只保留上次函数调用结束时的值。 (2)如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值为0,对自动变量来说,是一个不确定的值。 (3)其他函数不能引用静态局部变量。 (4)为了使某些外部变量只限于被文本引用,而不能被其他文件引用,这时可在定义外部变量时加一个static声明。2、 关键字:auto 用来声明自动变量。 可以显式的声明变量为自动变量。只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。并且只在声明它的函数内有效。而且当使用完毕后,它的值会自动还原为最初所赋的值。自动变量使用时要先赋值,因为其中包含的是未知的值。例:auto int name=1。3、 关键字:extern 用来声明全局变量。同时声明在main函数之前的变量也叫全局变量。它可以在程序的任何地方使用。程序运行期间它是一直存在的。全局变量也会初始化为0.例:extern int name。4、 关键字:register 用来声明为寄存器变量。也为局部变量,只在声明它的函数内有效。它是保存在寄存器之中的。速度要快很多。对于需要频繁使用的变量使用它来声明会提高程序运行速度。例:register int name=1。5、 二叉树的前序遍历的第一个节点a为树的根节点;中序遍历中a的左边的节点为a的左子树;a的右边节点为a的右子树;再分别对a的左右子树进行上述两步处理。例如:前序遍历访问顺序:abdgecefh.中序遍历访问顺序为:dgbaechf.则后序遍历的访问顺序为:gdbehfca6、 不是所有预处理命令行都位于C源程序的起始位置。如条件编译7、 C语言的预处理能实现文件包含、宏定义和条件编译的功能。8、 预处理在编译之前完成,它不占用程序运行时间(如宏替换)9、 宏定义(#define)与定义变量不同,它只作字符替换,不分配内存空间。10、 指针变量中只能存放地址,不要将一个整型量赋给一个指针变量。11、 “*”指针运算符,引用指针变量指向的变量,运算对象是指针。12、 “&”取地址运算符,得到变量在存储器中的首地址,运算对象是变量。13、 基类型相同的两个指针变量之间可以进行关系、赋值和减法运算,但不能进行加法运算,。加法运算的两个操作数必须是一个指针和一个整数。14、 逻辑结构是反映元素之间逻辑关系的,即先后件关系,分为线性结构(线性表、栈和队列)和非线性结构(树和图)15、 数据的逻辑结构与数据的存储结构不一定相同。16、 所谓线性链表就是指线性表的链式存储结构,简称链表。线性表链式存储结构的基本单位称为存储节点,每个存储节点包括数据域和指针域两个组成部分。17、 栈又称堆栈,它是一种受限制的线性表,其限制是仅允许在表的一端进行插入和删除运算,栈也称为“后进先出”表或“先进后出”表。18、 队列简称队,它也是一种受限制的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除,它是按“先进先出”的原则进行组织数据的。19、 二叉树的性质: (1)在二叉树中,第i层的节点总数不超过; (2)深度为h的二叉树最多有个节点(h=1),最少有h个节点; (3)对于任意一棵二叉树,如果其叶子节点数为,而度数为2的节点总数为,则; (4)具有n个节点的完全二叉树的深度为。20、 遍历是对树的一种最基本的运算: (1)前序遍历:访问根;按先序遍历左子树;按先序遍历右子树(第一位为根节点); (2)中序遍历:按中序遍历左子树;访问根;按中序遍历右子树; (3)后序遍历:按后序遍历左子树;按后序遍历右子树;访问根(最后一位为根节点)。21、 (1)顺序查找是一种最基本和最简单的查找方法,虽然顺序查找的效率不高,但在下列两种情况下也只能采用顺序查找:1)线性表是无序表;2)即使是有序线性表,如果采用链式存储结构,也只能顺序查找;(2)二分查找是针对有序表进行查找的简单、有效而又较常用的方法,显然当有序线性表为顺序存储时才能用二分查找,并且二分查找的效率要比顺序查找高的多,对长度为n的有序线性表,在最坏的情况下,二分查找只需要比较次。而顺序查找需要比较n次。(3)常用的排序方法:1 交换类排序法:1)冒泡排序法,需要比较的次数为n(n-1)/2; 2)快速排序法;2 插入类排序法:1)简插入排序法,最坏情况下需要n(n-1)/2次比较; 2)希尔排序法,最坏情况下需要次比较;3 选择类排序法:1)简单选择排序法,最坏情况下需要n(n-1)/2次比较; 2)堆排序法,最坏情况下需要次比较。22、结构化程序设计的主要原则:自顶向下、逐步求精、模块化、限制使用goto语句。它的主要目的是使程序结构良好、易读、易维护(主要强调的是程序易读性)23、结构化程序设计方法可用三种基本实现:1)顺序结构;2)选择结构;3)重复结构。24、面向对象程序设计的三个特征是:封装性,继承性和多态性。25、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则,软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。计算机软件是计算机系统中与硬件相互依存的的部分,包括程序、数据及相关文档的完整集合。26、通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期,可将软件生命周期分为软件定义、软件开发及软件运行维护三阶段。27、从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计4个步骤,从工程管理角度来看,软件设计包括概要设计和详细设计(属开发阶段)。28、衡量软件模块独立性使用耦合性和内聚性的角度标准: (1)耦合性是一个模块内部各个元素间彼此结合的紧密程度的度量;内聚是从功能角度来衡量模块内的联系。 (2)耦合性:耦合性是模块间互相连接的紧密程度的度量,耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。在程序结构中各模块的内聚性越强,则耦合性越弱,优秀软件应高内聚,低耦合。29、 (1)软件测试定义:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。(2)软件测试的目的:软件测试是为了发现错误而执行的程序过程。(3)软件测试的准则:1)所有的测试都应追溯到需求;2)严格执行测试计划,排除测试的随意性;3)充分注意测试中的群集现象;4)程序员应避免检查自己的程序;5)穷举测试不可能性。30、软件测试的方法和技术分类:从是否需要执行被测试软件的角度,分为静态测试和动态测试方法,按照功能划分,分为白盒测试和黑盒测试方法。(1)静态测试包括代码检测,静态结构分析,代码质量度量,不实际运行软件,主要通过人工运行;动态测试是基本计算机的测试,主要包括白盒测试方法和黑盒测试方法。(2)白盒测试:在程序内部进行,主要用于完成软件内部操作的验证,主要方法有逻辑覆盖、基本路径测试;黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误,用于软件确认,主要方法有等价类划分法、边值分析法、错误推测法、因果图等(不需要考虑程序的内部结构和内部特征)31、在两种基本测试方法中,白盒测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。32、软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。33、测试的特征:挑剔性、完全测试的不可能性、经济性。33、软件设计原则是:抽象化、模块化、信息隐蔽和数据独立性。34、软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特征,其中最重要的是无歧义性。35、软件开发模型包括瀑布型、快速原型法模型和螺旋模型。36、软件设计中,软件的结构设计是定义软件系统各主要主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。37、软件需求规格说明书(SRS)是需求分析阶段的最后成果,是软件开发中的重要文档之一,它具有以下几方面的作用:1)便于用户、开发人员进行理解和交流;2)反映出用户问题的结构,可以作为软件开发工作的基础和依据;3)作为确认测试和验收的依据。38、确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明书中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。39、软件按功能可以分为:应用软件、系统软件和支撑软件。编辑软件、教务管理软件属于应用软件,操作系统属于系统软件,浏览器属于支撑软件。软件是程序、数据和文档的集合。40、 软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,主要表现在以下几个方面:1)软件需求的增长得不到满足;2)软件的开发成本和进度无法控制;3)软件质量难以保证;4)软件可维护性差;5)软件的成本不断提高;6)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。41、 软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。42、 软件开发离不开系统环境资源的支持,其中必要的测试数据属于辅助资源(包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等)43、 软件调试方法有:1)强行排错法;2)回溯法;3)原因排除法。44、结构化方法的核心和基础是结构化程序设计理论。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的常用工具有:1)数据流图(DFD图);2)数据字典;3)判定树;4)判定表。数据字典是结构化分析的核心45、结构化程序由三种基本结构组成:顺序结构、分支结构和循环结构46、程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行47、程序调试的基本步骤:1)错误定位;2)修改设计和代码,以排除错误;3)进行回归测试,防止引进新的错误。48、 数据管理经历了人工管理、文件系统、数据库系统三个阶段。文件系统阶段的特点是数据满足一个特定格式而存储,不同程序中使用的数据仍会出现重复存储,也会导致数据冗余。数据库技术的主要目的是有效地管理和存取大量数据资源,数据库系统阶段的数据独立性最高。49、 数据库管理系统是数据库系统的核心。50、 数据库的特点:1)数据的集成性;2)数据高共享性与低冗余性;3)数据独立性:数据独立性是数据与程序之间互不依赖。也就是数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。51、 数据的独立性包括物理独立性和逻辑独立性。 物理独立性:数据的物理结构(如存储设备更换、物理存储方式)的改变,不影响数据库的逻辑结构,也不引起应用程序的变化。 逻辑独立性:数据库整体逻辑结构(如修改数据、增加新数据类型、改变数据间联系等)改变,不需要修改应用程序。52、 数据库系统在内部具有三级模式:概念级模式、内部级模式与外部级模式。 (1)概念级模式:是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。 (2)内部级模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。 (3)外部级模式:也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。53、 数据库应用系统中的核心问题是数据库设计。54、 数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。55、 数据处理的最小单位是数据项。56、 数据库管理系统常见的数据模型有层次模型、网状模型和关系模型3种。57、 数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。58、 数据模型是数据库设计的核心。59、 数据模型所描述的内容有三部分:数据结构、数据操作和数据约束。60、 数据模型按不同应用层次分为三种类型:1)概念数据模型;2)逻辑数据模型:有层次模型(基本结构是树形结构)、网状模型(出现略晚于层次模型,从图论观点看是一个不加任何条件限制的无向图)、关系模型(采用二维表来表示,简称表)、面向对象模型等;3)物理数据模型。61、 在关系模型中,把数据看成一个二维表,没一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名。表中的一行称为一个元组,相当于记录值。62、 关系模型的数据操作即是建立在关系上的数据操作,一般有查询、增加、删除和修改四种操作。63、 E-R模型由实体、联系、属性三者结合起来才能表示一个现实世界,用矩形表示实体集,用椭圆表示属性,用菱形表示联系。64、 算法的空间复杂度是指执行算法需要的内存空间;时间复杂度是指算法执行过程中所需要的基本运算次数。65、 程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流;而在模块之间用带有箭头的线段表示调用关系。66、 模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合。67、 对象的基本特点:标志唯一性、分类性、多态性、封装性和模块独立性。68、 线性表的存储结构有:顺序存储(随机存取)、链式存储(顺序存取)、索引存储、散列存储。69、 双目运算的转化规则:char short int unsigned long double float 70、 继承是指子类自动的共享基类中定义的数据和方法的机制。71、 自然连接是最常用的一种连接,它下面的条件:1)两关系有公共域;2)通过公共域的相等值进行连接、。72、 简单程序设计的步骤和顺序:1)建立模型;2)算法设计;3)算法表达;4)编写程序;5)程序调试;6)程序文档的编写与程序维护。73、 指针变量在定义后没有指向具体的变量时,即指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。74、 求地址运算符“&”只能应用于变量和数组元素,不可以用于表达式,常量或者被说明为register的变量,且“&”必须放在运算对象的左边,而且运算对象的类型必须与指针变量的基类型相同。75、 当指针变量p指向二维数组a的首行后,数组元素aij的地址可表示为:&aij ai+j *(a+i)+j pi+j数组元素aij可表示为:aij *(ai+j) *(*(a+i)+j) *(*(p+i)+j) *(pi+j)76、 指针变量的定义形式:存储类型 数据类型 *指针变量名=初始值指针变量定义后,必须将其与某个变量的地址相关才能使用,可以通过赋值的方式将指针变量与简单变量相关联,指针变量的赋值方式为: =&(1) “*”指针变量名-代表所指变量的值(2) 指针变量名-代表所指变量的地址77、 数组名是数组的首地址,不能对其进行赋值和算术运算操作。78、 自增(+)和自减(-)运算符不可以用于数组名,即a+,a-,+a,-a都是不允许的,因为数组名a作为首地址在内存中的位置是不会改变的;但p+,p-,+p,-p是允许的,因为p是指针变量。 a、&a0、p-a的首地址 a+1、p+1、&a1-a1的地址 *a、a0、*p-数组元素a0的值 *(a+1)、*(p+1)、a1、*+p-数组元素a的值 a+i、p+i、&a0+i、&ai-ai的地址 *(a+i)、*(p+i)、ai、pi-数组元素ai的值79、 数组长度只能由常量或常量表达式说明,不能用变量80、 main(int argc,char *argv),其中,argc和argv两个参数名,可由用户自己命名,但它们的类型是固定的.argvi表示指向第i个字符串的首地址。81、 关系是有序组的集合,可将关系操作看成是集合的运算 (1)插入: (2)删除: (3)笛卡尔积()可作两关系合并操作(合并后有n+m元关系,p+q个元组) (4)交运算:将两个关系中共有元组表示为 (5)除运算:将一个关系中元组去除另一个关系中元组表示为 (6)连接与自然连接运算82、 由高级语言编写的程序称为“程序源”,由二进制代码表示的程序称为“目标程序”,而“编写程序”是指可以把源程序转换成目标程序的软件。83、 每条C语句经过编译(compile)最终都将转换成二进制的机器指令(.obj)的文件,最后还要由“连接程序”(link)将指.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.exe的可执行文件。84、 算法是指为解决某个问题而采取的确定而且有限的步骤,一个算法应具有以下五个特点:1)有穷性;2)确定性;3)可行性;4)有零个或多个输入;5)有一个或多个输出。85、 逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值就是该逗号表达式的值。逗号运算符在所有的运算符中优先级最低。86、 条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称为三目运算,它也是C语言中唯一的三元运算。条件运算符的优先级别仅高于赋值运算符,而低于其他的所有运算符,其结合方向是“自左向右”。条件表达式的一般形式为:表达式1?表达式2: 表达式3.当表达式1的值为真时,取表达式2的值作为整个条件表达式的值,当表达式1的值为假时,去表达式3的值作为整个条件表达式的值。87、 逻辑运算符与条件运算符、赋值运算符、关系运算符、算术运算符的优先次序如下:高 低 !(逻辑非) 算术运算 关系运算 &(逻辑与) II(逻辑或) 条件运 算 赋值运算88、 strlen(s)计算以s为起始地址的字符串的长度,并作为函数值返回,这一长度不包括串尾的结束标志0(但包括0之前的所有空格)。Sizeof(a)是计算数组a的长度,包括089、 函数rewind的作用是将文件指针重新指向一个流的开头。90、 结构体变量中成员的引用: (1)结构变量名.成员名(2)(*结构指针变量).成员名 (3)结构指针变量成员名91

温馨提示

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

评论

0/150

提交评论