还剩5页未读,继续阅读
文本内容:
《C语言程设计》教学基本知识点第一章c语言基本知识
1.C源程序的框架尽管各个C源程序的功能千变万化,但框架是不变的,主要有编译预处理、主函数、函数n等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为maino
2.C语言源程序的书写规则1C源程序是由一个主函数和若干个其它函数组成的⑵函数名后必须有小括号,函数体放在大括号内3C程序必须用小写字母书写4每句的末尾加分号⑸可以一行多句6可以一句多行⑺可以在程序的任何位置加注释
3.语句种类语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同C语言的基本语句可以分为五大类⑴流程控制语句流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成其中后两种结构要用特定的流程控制语句实现2表达式语句表达式语句的形式是表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作最常见的表达式语句是赋值语句3函数调用语句函数调用语句实际上也是一种表达式语句,形式为在一次函数调用的小括号后面加上一个分号4空语句空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用⑸复合语句复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句注意复合语句中最后一个语句末尾的分号不能少复合语句右大括号后面没有分号
4.运算符用来表示数据各种操作的符号称为运算符运算符实际上代表了一种类型数据的运算规则不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符三目运算符只有条件运算符一个根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等.表达式表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式一个常量,一个变量或一个函数都可以看成是一个表达式表达式的种类有算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号表达式顺序表达式、条件表达式、指针表达式.数据的输入/输出C语言本身没有输入/输出语句,数据的输入/输出是通过调用库函数来实现的第二章数据类型知识点划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算[C语言的数据类型数最类型有整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型.各种类型数据的定义方法定义形式数据类型变量名1变量名2……变量名n;3常量与变量
(1)常量一一在程序执行期间其值不变的量它不能被赋值
(2)变量一一在程序运行期间其值可以改变的量.各种类型数据的混合运算各类数据运算前会自动转换成同一类型规律如右图示从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为血型;从下向上的箭头表示转换方向是向级别高的靠拢.强制类型变换当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为(数据类型符)(被转换对象)第三章选择知识点C语言中实现选择结构的控制语句有两种条件分支语句if和开关分支语句switchof语句的三种形式if(表达式)语句;if(表达式)语句1;else语句2;if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;•••elseif(表达式n)语句n;
2.开关分支语句switch⑴形式switch(表达式){caseel:语句1;break;casee2:语句2;break;casee3:语句3;break;caseen:语句n;break;default:语句n+1;)⑵功能当表达式的值等于el时,执行语句1;当表达式的值等于e2时,执行语句2;当表达式的值等于en时,执行语句n;当表达式的值与常量eke2……en谁都不等时,就执行default后的语句第四章循环知识点循环就是在程序执行过程中,反复多次的执行同一段程序C语言中有三种循环语句.while循环语句形式为while(表达式)(循环体};执行过程是先计算表达式的值,当表达式的值非时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为时就结束循环.do-while循环语句形式为do(循环体}while(表达式);执行过程是先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为时就结束循环.for循环语句形式为for(表达式1;表达式2;表达式3)循环体}.三种循环语句的比较三种循环语句可以完成同一件事,可任选其一使用while和do—while循环时,要提前给循环变量赋初值而for循环是在表达式1中赋初值的while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do—while循环是先执行循环体后判断条件,即循环体至少也得执行一次for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等.循环嵌套三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的注意必须是一个循环完整的套住另一个循环.break语句break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行当程序执行至ijbreak语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句.continue语句continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断根据判断的结果决定是否继续执行下次循环.goto语句goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处使用格式为got标号;利用goto语句与if条件语句配合,也可以实现条件循环C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个“:“第五章数组知识点数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标一维数组类型说明符数组名、[数组长度\];1数组命名要符合标识符的命名规则⑵数组名后的括号必须是方括号,不能是圆括号3数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组4数组长度表示数组中元素的个数5数组元素的下标从开始数,所以最大下标是数组的长度减lo.多维数组以二维为例类型说明符数组名、[第一维长度\]\]第二维长度\];1数组命名要符合标识符的命名规则⑵数组名后的括号必须是两个方括号,定义时不能写成inta\[34\];⑶数组长度必须是整型常量表达式4第一维长度表示数组行数,第二维长度表示数组列数5每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从开始数二维数组的初始化C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下static类型说明符数组名、[第一维长度\]\[第二维长度\]={初值表};二维数组的引用二维数组不能整体引用,要引用数组的单个元素,形式为数组名\[下标\]\[下标\]和普通变量的使用无任何区别.字符数组C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组1字符数组的定义形式char数组名、[数组长度\];因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义int数组名、[数组长度\];⑵字符数组的初始化给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串形式如下staticchar数组名、[数组长度\]={字符常量表};staticchar数组名、[数组长度\]={字符串常量};.数组与函数数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址•常用的字符串处理函数C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作对以下儿个函数要掌握其功能和调用形式(l)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大⑵puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上
(3)strcat(字符数组名1字符数组名2)此函数功能是将字符数组1中的\\0去掉后将字符数组2的内容连接到字符数组1的末尾
(4)strcpy(字符数组名1字符数组名2)函数功能是将字符数组2的内容(包括\\0)拷贝到字符数组1中,字符数组2处也可以是字符串常量strcpy函数可以实现拷子串⑸strcmp(字符数组名1字符数组名2)函数功能是两个字符串(ASCII码)比大小
(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括\\0
(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写
(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写第六章函数知识点每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序.函数的概念函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用.标准函数各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便使用库函数时必须把它的头文件用#include命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出3•自定义函数C语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数.定义函数C语言规定每个函数都要独立定义函数定义不能嵌套函数定义的形式数据类型函数名(形参表)形参说明语句序列(说明语句序列可执行语句序列}.函数调用函数调用的形式是函数名(实参表)当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处5全局变量和局部变量局部变量在函数内部定义的变量称为局部变量,只在本函数中有效全局变量在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束.动态存储与静态存储内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类型第七章预处理知识点对高级语言编译连接就是把源程序转换成机器语言,C语言在进行编译之前还要预先处理三件事宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其特点是1所有的预处理命令都放在程序的头部,以#开头,且#号后面不留空格
2.预处理命令不是C的语句,行尾不加分号3预处理命令是在编译预处理阶段完成的,所以它们没有任何计算、操作等执行功能4预处理命令有所变动后,必须对程序重新进行编译和连接.宏定义宏定义命令的作用是给一些常用的对象重新命名,在程序中可以用宏名来引用这些对象,预处理时宏名会被代表的内容替换,此过程称为宏展开或宏替换宏定义有两种形式文件包含使用文件包含命令可以将另一个C源程序的全部内容包含进来,其形式为#includeV文件名>或#111011€16文件名通常可以把经常用到的,带公用性的一些函数或符号等集合在…起形成一个源文件,然后用此命令将这个源文件包含进来,这样可以避免在每个新程序中都要重新键入这些内容.条件编译‘标名思义满足条件时进行编译,为了解决程序移植问题,C语言提供了条件编译命令,它能使源程序在不同的编译环境下生成不同的目标代码文件条件编译命令有3种形式第八章指针知识点.什么是指针和指针变量?指针就是内存地址,因为通过“地址”可以找到变量,所以内存“地址”形象的称为指针指针变量就是存地址的变量在C语言中用一个变量存另一个变量的地址,那么就称这个变量为指针变量,指针变量的值就是地址通常指针变量被简称为指针指针变量是有类型的,即指针值增1表示指向下一个数据,如整型数据在内存中占两个字节,它的指针变量增1是增两个字节如实型数据在内存中占4个字节,它的指针变量增1是增4个字节.怎样定义指针变量?定义形式为数据类型*指针变量名1*指针变量名2……;.指针的有关运算指针为内存地址是整数,可以进行一些算术运算、关系运算、赋值运算、特殊运算等,但要注意运算代表的实际意义.指向数组的指针变量⑴指向数组元素的指针变量定义形式为inta\[10\];int*p=a;⑵指向一维数组的指针变量定义形式为inta\[3\]\[4\];int*p\[4\];P=a;3指向字符串的指针变量定义形式为char*p=字符序列”;C语言中的字符串是以隐含形式的字符数组存放的,定义了指针变量p并不是将整个字符串都存放在p中了,而p中存放的是字符串的首地址.指向函数的指针变量一个函数在编译时被分配一个入口地址,这个地址就是函数的指针,可以用一个指针变量指向它指向函数的指针变量定义形式为数据类型指针变量名;.指针变量做函数的参数⑴指针作函数的参数可以传送地址,如数组的首地址,函数的入口地址等2指针作函数的参数也可以用地址方式传送数据.返回值是指针的函数即函数的返回值是内存的地址,利用这种方法可以将一个以上的数据返回给函数的调用者定义形式如下数据类型*函数名形参表.指针数组定义形式为数据类型*数组名、[数组长度\];数组中的每个元素都是指针类型的数据,这种数组被称为指针数组.指向指针的指针定义形式为数据类型**指针变量名;指向指针数据的指针变量称为指向指针的指针.main函数的形参main函数可以带两个形参,如mainargcargvintargc;char*argv\[\];IL指向结构体的指针变量结构体变量的指针就是该变量所占据的内存段的首地址指向结构体的指针变量定义形式为struct结构体类型名*指针变量名;
12.指向共用体的指针变量共用体变量的指针就是该变量所占据的内存段的首地址指向共用体的指针变量定义形式为union共用体类型名*指针变量名;替换了的字符时(这里为正中间的字符“4),原来的字符己不复存在第九章结构体与共用体知识点结构体类型是C语言的一种构造数据类型,它是多个相关的不同类型数据的集合,相当于其它高级语言中的记录
1.结构体类型定义结构体类型的形式为struct结构体类型名{数据类型成员名1;•••数据类型成员名n;)2结构体变量的定义结构体变量有三种定义形式⑴先定义结构体类型,后定义结构体变量
(2)定义结构体类型的同时定义结构体变量⑶不定义结构体类型名,直接定义结构体变量
3.结构体变量的引用⑴结构体变量的初始化许多C版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准C无此限制,允许在定义时对自动变量初始化
(2)结构体成员的引用由于C语言一般不允许对结构体变量的整体引用,所以对结构体的引用只能是对分量的引用,结构体变量中的任一分量可以表示为结构体变量名•成员名
4.结构体与数组C语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组结构体数组有三种定义形式⑴先定义结构体类型,后定义结构体数组
(2)定义结构体类型的同时定义结构体数组⑶不定义结构体类型名,直接定义结构体变量
5.结构体与指针一方面结构体变量中的成员可以是指针变量,另一方面也可以定义指向结构体的指针变量,指向结构体的指针变量的值是某一结构体变量在内存中的首地址结构体指针的定义形式:struct结构体类型名*结构体指针变量名由结构体指针引用结构体成员的方法6用指针处理链表结构体的成员可以是指针类型,并且这个指针类型就是本结构体类型的,这样可以构造出一种动态数据结构一成为链表所谓动态数据就是指在编译时不能确定数据量的多少,而是在程序执行时才确定的数据,动态数据可以比较方便的进行数据插人或删除等操作7幺吉杉j体^与函娄攵结构体变量的成员可以作函数的参数、指向结构体变量的指针也可以作函数的参数虽然结构体变量名也可以作为函数的参数,将整个结构体变量进行传递,但一般不这样做,因为如果结构体的成员很多,或者有些成员是数组,则程序运行期间,将全部成员一个一个的传递,既浪费时间,又浪费空间,开销太大8结构体与共用体结构体变量中的成员可以是共用体,共用体变量中的成员可以是结构体共用体为了节省存储空间,C语言允许将几种不同类型的数据存放在同一段内存单元,它们共用一个起始地址,称做共用体
1.共用体类型定义union共用体类型名{数据类型成员名1;■・•数据类型成员名n;)
2.共用体变量定义⑴先定义类型,后定义变量
(2)定义类型的同时定义变量⑶不定义类型名,直接定义变量
3.共用体变量的引用5)共用体变量不能整体引用,只能引用其成员,形式为共用体变量名•成员名
(2)共用体变量的成员不能初始化,因为它只能放一个数据⑶共用体变量存放的数据是最后放入的数据
(4)共用体变量的长度是最大的成员的长度⑸可以引用共用体变量的地址、各个成员的地址,它们都是同一个地址⑹共用体变量不能当函数的参数或函数的返回值,但可以用指向共用体变量的指针作函数的参数⑺共用体变量的成员可以是数组,数组的成员也可以是共用体变量第十章位运算知识点位运算就是按二进制位进行操作的运算,运算的对象只能是整型或字符型,不能是实型不同长度的变量进行位运算,系统会自动右对齐,而左端的不齐部分,对于无符号数左端补满0对于有符号数则正数左端补满0负数左端补满1o第十一章文件知识点操作系统是以文件为单位对数据进行管理的,任何一种计算机高级语言都要有和磁盘文件打交道的能力,否则该语言的功能充其量是算一算、显示显示而已在C语言中没有单独的文件操作语句,所有对文件的操作都是通过库函数来完成的,所以本章的重点是学会使用有关文件操作的库函数.文件的基本概念.文件类型指针.文件的操作。