c语言程序设计知识点总结_第1页
c语言程序设计知识点总结_第2页
c语言程序设计知识点总结_第3页
免费预览已结束,剩余6页可下载查看

下载本文档

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

文档简介

1、C 语 言 程 序 设 计 教 学 基 本 知 识 点第一章 C 语言基本知识 源程序的框架尽管各个 C 源程序的功能千变万化,但框架是不变的,主要有:编译预处理、 主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主 函数的名字固定为 main 。语言源程序的书写规则:(1) C 源程序是由一个主函数和若干个其它函数组成的。(2) 函数名后必须有小括号,函数体放在大括号内。(3) C 程序必须用小写字母书写。(4) 每句的末尾加分号。(5) 可以一行多句。(6) 可以一句多行。(7) 可以在程序的任何位置加注释。3. 语句种类 语句是程序的基本成分,程序的执行就是

2、通过一条条语句的执行而得以实现的, 根据表现形式及功能的不同, C 语言的基本语句可以分为五大类。(1) 流程控制语句流程控制语句的功能是控制程序的走向, 程序的流程有三种基本结构: 顺序结构、 分支结构和循环结构, 任何复杂的程序都可以由这三种基本结构复合而成。 其中后两 种结构要用特定的流程控制语句实现。(2) 表达式语句表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束 符,是一个语句必不可少的成分。 表达式和表达式语句的区别在于表达式代表的是一 个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。(3) 函数调用语句 函数调用语句实际上也是一种表达式语

3、句, 形式为:在一次函数调用的小括号后 面加上一个分号。(4) 空语句 空语句的形式就是一个分号, 它不代表任何动作, 常常作为一个意义转折点使用(5) 复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句, 在任何单一语句存在的地方都可以是复合语句。 注意复合语句中最后一个语句末尾的 分号不能少。复合语句右大括号后面没有分号。4.运算符 用来表示数据各种操作的符号称为运算符运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则, 其操作的数据类型必须符合该运算符 的要求,运算结果的数据类型也是固定的。根据参加操作的数据个数多少,可以将 C 语言的运

4、算符分为单目运算符,双目运算符和三目运算符 (三目运算符只有条件运算符一个 )根据运算对象和运算结果的数据类型可分为算术运算符、 关系运算符、 逻辑运算 符等。5. 表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常 量,一个变量或一个函数都可以看成是一个表达式。表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转 换表达式、逗号表达式 (顺序表达式 )、条件表达式、指针表达式。6. 数据的输入 /输出C 语言本身没有输人 /输出语句,数据的输入 / 输出是通过调用库函数来实现的。 第二章数据类型知识点划分数据类型的意义是编译系统

5、对每个不同类型的数据在内存中分配的字节数 不同,不同类型的数据可以按规定参加不同类型的运算。语言的数据类型 数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结 构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是 C 语言中的基本类型。2. 各种类型数据的定义方法 定义形式:数据类型变量名1,变量名2, 变量名n;3. 常量与变量(1)常量在程序执行期间其值不变的量。它不能被赋值。(2)变量在程序运行期间其值可以改变的量。4. 各种类型数据的混合运算各类数据运算前会自动转换成同一类型。 规律如右图示: 从右向左的箭头表示必 定的转换,如 float 型

6、数据运算前化成 double 型,以提高运算精度,结果也为 double 型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转 换方向是向级别高的靠拢。5. 强制类型变换当我们需要对数据进行类型变换, 而机器又不能自动完成时, 就要用强制类型变 换,形式为: (数据类型符 )(被转换对象 )。第三章选择知识点C 语言中实现选择结构的控制语句有两种:条件分支语句 if 和开关分支语句 switch。 语句的三种形式:(1)if(表达式)语句;(2)if(表达式)语句1;else语句2;(3)if(表达式1)语句1; elseif(表达式2)语句2;elseif

7、(表达式3)语句3;elseif(表达式n)语句n;2. 开关分支语句 switch(1)形式switch(表达式)caseel 语句 1; break; casee2语句 2; break; casee3语句 3; break;caseen语句 n; break;default:语句 n+1;(2)功能当表达式的值等于 e1 时,执行语句 1 ; 当表达式的值等于e2时,执行语句2;当表达式的值等于en时,执行语句n;当表达式的值与常量el、e2en谁都不等时,就执行default后的语句 第四章循环知识点循环就是在程序执行过程中, 反复多次的执行同一段程序。 C 语言中有三种循环语句。 循

8、环语句形式为:while(表达式)循环体;执行过程是: 先计算表达式的值, 当表达式的值非 0时就执行循环体, 之后再判 断表达式的值,且重复以上过程;当表达式的值为 0 时就结束循环。 循环语句 形式为: do循环体while( 表达式 );执行过程是: 先执行循环体一次, 再判断表达式的值, 当表达式的值非 0 时就再 执行循环体, 之后再判断表达式的值, 且重复以上过程; 当表达式的值为 0 时就结束 循环。循环语句 形式为:for(表达式1;表达式2;表达式3) 循环体 4. 三种循环语句的比较 三种循环语句可以完成同一件事,可任选其一。使用 while 和 do-while 循环时,

9、要提前给循环变量赋初值。而 for 循环是在表达 式 1 中赋初值的。while 循环和 for 循环都是先判断条件后执行循环体,有可能一次也不执行循环体, do-while 循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for 循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。5. 循环嵌套三种循环控制语句可以互相嵌套, 即在一个循环体内部又可以出现另一循环, 这 种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。语句break 语句只能出现在三种循环语句和 switch 多分支语句中,其作用是用来中断 这四种语句的执行。当程序执行到break语

10、句时,会跳出break语句所在的循环或switch 分支,而直接执行紧跟在它们后面的语句。语句con ti nue语句只能出现在三种循环语句中,当程序执行到 con ti nue语句时,其作 用是提前结束本次循环, 自动跳过循环体中后半部剩余的语句的执行, 而直接回到循 环条件判断。根据判断的结果决定是否继续执行下次循环。语句goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。 使用格式为 :goto 标号;利用 goto 语句与 if 条件语句配合,也可以实现条件循环。 C 语句允许在任何语句前添加标号, 作为跳转目标,标号的构成是标识符后面加一个 ":&qu

11、ot;。 第五章数组知识点 数组就是同类型的一批数据的集合, 用一个变量名存放, 区分各元素的办法是用下标。1. 一维数组类型说明符数组名 数组长度 ;(1) 数组命名要符合标识符的命名规则。(2) 数组名后的括号必须是方括号,不能是圆括号。(3) 数组长度必须是正整数 ,可以是个表达式,但不能有变量, C 语言不支持动态数组。(4) 数组长度表示数组中元素的个数(5) 数组元素的下标从 0 开始数,所以最大下标是数组的长度减 1。 2多维数组 (以二维为例 )类型说明符数组名 第一维长度 第二维长度 ;(1) 数组命名要符合标识符的命名规则。(2) 数组名后的括号必须是两个方括号,定义时不能

12、写成inta3, 4;。(3) 数组长度必须是整型常量表达式。(4) 第一维长度表示数组行数,第二维长度表示数组列数。(5) 每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所 在的列,每一维的下标都从 0 开始数。二维数组的初始化: C 语言规定只有静态数组和外部数组才允许在定义时赋初值, 赋初值形式如下:static类型说明符数组名第一维长度第二维长度=初值表; 二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组 名下标下标和普通变量的使用无任何区别。3字符数组C 语言中没有字符串变量, 字符串是靠字符数组实现的, 所谓字符数组就是元素 的数据类型

13、为字符型的数组。(1) 字符数组的定义形式:char数组名数组长度;因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名数组长度 ;(2) 字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一 种是用字符串。形式如下:staticchar数组名数组长度=字符常量表; staticchar数组名数组长度=字符串常量;4. 数组与函数数组经常作为函数的参数, 数组做函数的参数有两种形式, 一是数组元素做函数 的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。5. 常用的字符串处理函数C 语言提供了一些处理字符串的标准函数, 用以完成一

14、些常见的操作。 对以下几 个函数要掌握其功能和调用形式。(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注 意定义数组时数组长度要足够大。(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的0'去掉后 将字符数组 2的内容连接到字符数组 1 的末尾。strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括0') 拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子 串。(5)strcmp(字符数组名1,字符数组

15、名2)函数功能是两个字符串(ASCII码)比大小。 strlen(字符数组名)此函数功能是求字符串的长度,注意不包括0'。(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。 第六章函数知识点每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的 基础工作就是函数的具体编写, C 语言中的函数就相当于其它高级语言中的子程序。1. 函数的概念函数就是一个数据加工厂 ,从函数外部接收数据,在函数内部加工处理,然后得 到一个结果返回给外部的调用者。 所以函数就是对语

16、言功能的扩充, 对函数的调用就 是对功能的调用。2. 标准函数各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一 些基本的、 常用的功能编成了函数, 供大家使用方便。 使用库函数时必须把它的头文 件用#in clude命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。3. 自定义函数C语言也允许用户自己编写函数以实现 C库函数中没有提供的功能,称作自定义 函数。4定义函数C 语言规定每个函数都要独立定义 ,函数定义不能嵌套。 函数定义的形式:数据类型函数名 (形参表 )形参说明语句序列说明语句序列 可执行语句序列 5函数调用函数调用的形式是: 函数名(实参表)。

17、当实参表中有多个参数时, 要用逗号隔开, 若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。 5全局变量和局部变量 局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。全局变量: 在函数外部定义的变量称为全局变量, 它的作用范围是从定义开始到本文 件结束。6动态存储与静态存储 内存中的用户数据区分为动态存储区和静态存储区, 动态存储区是指程序运行期 间给变量临时分配存储单元, 变量用完后立即释放单元的区域, 动态存储区放的是函 数的形参、自动变量、函数调用期间的现场保护数据和返回地址。 静态存

18、储区是指程序运行期间给变量分配固定的存储单元, 放的是全局变量和局部静 态变量。一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类 型。第七章预处理知识点 对高级语言编译连接就是把源程序转换成机器语言, C 语言在进行编译之前还要预 先处理三件事:宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其 特点是:1. 所有的预处理命令都放在程序的头部,以 #开头,且 #号后面不留空格。2. 预处理命令不是 C 的语句,行尾不加分号。3. 预处理命令是在编译预处理阶段完成的, 所以它们没有任何计算、 操作等执行功能。4. 预处理命令有所变动后,必须对程序重新进行编译和连

19、接。1宏定义 宏定义命令的作用是给一些常用的对象重新命名, 在程序中可以用宏名来引用这 些对象, 预处理时宏名会被代表的内容替换, 此过程称为宏展开或宏替换。 宏定义有 两种形式:2文件包含 使用文件包含命令可以将另个 C 源程序的全部内容包含进来,其形式为:#includev文件名 或#include"文件名"通常可以把经常用到的,带公用性的一些函数或符号等集合在起形成一个源文 件,然后用此命令将这个源文件包含进来, 这样可以避免在每个新程序中都要重新键 入这些内容。3条件编译 顾名思义满足条件时进行编译, 为了解决程序移植问题, C 语言提供了条件编译 命令,它能使源程

20、序在不同的编译环境下生成不同的目标代码文件。 条件编译命令有 3 种形式。第八章指针知识点1. 什么是指针和指针变量? 指针就是内存地址,因为通过“地址”可以找到变量,所以内存“地址"形象的称为指针。指针变量就是存地址的变量。在 C 语言中用一个变量存另一个变量的地址,那 么就称这个变量为指针变量,指针变量的值就是地址。通常指针变量被简称为指针。指针变量是有类型的, 即指针值增 1 表示指向下一个数据, 如整型数据在内存中 占两个字节, 它的指针变量增 1是增两个字节。 如实型数据在内存中占 4个字节, 它 的指针变量增 1是增 4 个字节。2. 怎样定义指针变量?定义形式为:数据类

21、型*指针变量名1, *指针变量名2;3. 指针的有关运算指针为内存地址是整数, 可以进行一些算术运算、 关系运算、赋值运算、 特殊运算等, 但要注意运算代表的实际意义。4指向数组的指针变量(1) 指向数组元素的指针变量定义形式为: inta10; int*p=a;(2) 指向一维数组的指针变量定义形式为: inta34;int(*p)4;p=a;(3) 指向字符串的指针变量定义形式为:char*p="字符序列"C 语言中的字符串是以隐含形式的字符数组存放的, 定义了指针变量 p 并不是将整个 字符串都存放在 p 中了,而 p 中存放的是字符串的首地址。5指向函数的指针变量

22、一个函数在编译时被分配一个入口地址, 这个地址就是函数的指针, 可以用一个指针 变量指向它。指向函数的指针变量定义形式为:数据类型(*指针变量名 );6. 指针变量做函数的参数 (1)指针作函数的参数可以传送地址,如数组的首地址,函数的入口地址等。 (2)指针作函数的参数也可以用地址方式传送数据。7返回值是指针的函数 即函数的返回值是内存的地址, 利用这种方法可以将一个以上的数据返回给函数 的调用者。定义形式如下:数据类型 *函数名(形参表)8.指针数组定义形式为:数据类型 *数组名数组长度 ; 数组中的每个元素都是指针类型的数据,这种数组被称为指针数组。 9.指向指针的指针定义形式为:数据类

23、型 *指针变量名; 指向指针数据的指针变量称为指向指针的指针。函数的形参main 函数可以带两个形参,如: main(argc,argv)intargc;char*argv; 指向结构体的指针变量指向共用体的指针变量11.指向结构体的指针变量 结构体变量的指针就是该变量所占据的内存段的首地址 定义形式为: struct 结构体类型名 *指针变量名; 12.指向共用体的指针变量共用体变量的指针就是该变量所占据的内存段的首地址 定义形式为: union 共用体类型名 *指针变量名;替换了的字符时 (这里为正中间的字符 "4") ,原来的字符己不复存在。 第九章结构体与共用体知识

24、点结构体类型是 C 语言的一种构造数据类型,它是多个相关的不同类型数据的集 合,相当于其它高级语言中的记录。1. 结构体类型定义 结构体类型的形式为: struct 结构体类型名 数据类型成员名 1;数据类型成员名 n;2. 结构体变量的定义 结构体变量有三种定义形式:(1)先定义结构体类型,后定义结构体变量。 (2)定义结构体类型的同时定义结构体变量。(3) 不定义结构体类型名,直接定义结构体变量。3. 结构体变量的引用(1)结构体变量的初始化:许多C 版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准 C 无此限制,允许在定义时 对自动变量初始化。

25、(2)结构体成员的引用:由于 C 语言一般不允许对结构体变量的整体引用,所以对结 构体的引用只能是对分量的引用, 结构体变量中的任一分量可以表示为: 结构体变量 名成员名4. 结构体与数组C 语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组。 结构体数组有三种定义形式:(1)先定义结构体类型,后定义结构体数组。 (2)定义结构体类型的同时定义结构体数组。(3) 不定义结构体类型名,直接定义结构体变量。5. 结构体与指针 一方面结构体变量中的成员可以是指针变量, 另一方面也可以定义指向结构体的 指针变量,指向结构体的指针变量的值是某一结构体变量在内存中的首地址。 结构体指针的定义形式 :struct 结构体类型名 * 结构体指针变量名。 由结构体指针引用结构体成员的方法6. 用指针处理链表 结构体的成员可以是指针类型, 并且这个指针类型就是本结构体类型的, 这样可 以构造出一种动态数据结构成为链表。 所谓动态数据就是指在编译时不能确定数据 量的多少, 而是在程序执行时才确定的数据, 动态数据可以比较方便的进行数据插人 或删除等操作。7. 结构体与函数 结构体变量的成员可以作函数的参数、 指向结构体变量

温馨提示

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

评论

0/150

提交评论