2023年c语言期末复习_第1页
2023年c语言期末复习_第2页
2023年c语言期末复习_第3页
2023年c语言期末复习_第4页
2023年c语言期末复习_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

任务一重点难点分析:了解程序和程序设计语言,c语言的发展和特点,初步掌握c语言的构成和格式特点。

C程序的构成(1)C程序由函数构成,函数是C程序的基本单位。每个C程序由一个或多个函数组成,其中每一个C程序都必须有,且只能有一个main函数。函数是C程序的基本单位。

(2)一个函数由函数首部和函数体两部分构成函数首部涉及函数类型、函数名、函数的参数说明等。例如:intmax(intx,inty)函数体是函数首部下面用一对{}括起来的部分。一般涉及变量定义部分和语句执行部分。变量定义部分定义函数内部所用变量,语句执行部分规定函数所要执行的动作。(3)不管main函数在整个程序中的位置如何,C语言程序总是从main函数开始执行的,主函数执行完毕,整个程序结束运营。(4)书写格式自由,一行可以写多个语句,一个语句也可以写在多行上,但每条语句或数据定义的最后必须有一个分号“;”,作为语句的结束标志。(5)可用“/*……*/”对C程序中的任何部分作注释。(6)预解决命令通常应放在源文献或源程序的最前面。(7)VisualC++6.0是集编辑、编译链接和执行于一体的软件。(8)C语言源文献的扩展名是.c。任务二本章重点:掌握变量的定义,掌握各种运算符的特点及表达式的对的引用以及各种数据类型之间的互相转换。本章难点:各种数据类型的存储形式、互相转换及各种表达式的对的引用1数据类型

C语言中提供了丰富的数据类型,其中整型、实型和字符型是基本数据类型,通过基本数据类型可再构造其他更复杂的数据类型。1.1标记符

标记符:用来标记变量名、符号常量名、函数名、数组名、类型名、文献名的有效字符序列。

C语言规定标记符只能由字母、数字、下划线三种字符组成,并且第一个字符必须是字母或下划线,同时C语言严格区分大小写。标记符分三类:关键字、预定义符和用户标记符1.2变量注意:变量名、变量值、变量存储空间(变量内存单元)三者的区别与关系1.变量的定义

变量必须先定义再使用。

【格式】:数据类型

变量名列表;2.变量的赋值

即将某一数据存入到变量的内存单元中。数据称为变量值。1.3常量

常量分为:直接常量和符号常量1.直接常量

直接在程序中使用的常量,根据字面意义可进行区分。2.符号常量

【定义格式】#define

符号常量标示符

常量值

例:#define

PI

3.14

注意:符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。

使用符号常量的好处是:含义清楚;能做到“一改全改”。2.整型数据2.1整型常量

C语言中,整型常量用来表达数学中的整数,可以用十进制、八进制或十六进制的形式表达,但没有二进制表达形式。2.2整型变量1.分类归纳起来共6类(注意分派的字节数),即:

有符号基本整型

[singned]int

有符号短整型

[singned]short[int]

有符号长整型

[singned]long[int]

无符号基本整型

[unsigned]int

无符号短整型

[unsigned]short[int]

无符号长整型

[unsigned]long[int]2.整型数据的存放形式

C语言规定一个有符号整数在内存中是以补码形式存放的。3.整型数据的溢出

在应用中根据实际情况来选择数据类型,否则不能对的表达。3实型数据3.1实型常量

C语言中,实型常量用来表达带有小数点的实数,有两种表达形式:(1)

十进制小数形式:如,4.6、-1.23等(2)

指数形式:由尾数、字母e或E、指数三部分组成;如:3.25E23.2实型变量1.分类:单精度(float)、双精度(double)、长双精度(longdouble)2.实型数据的舍入误差

使用时注意不同类型的有效位问题,避免出现舍入误差4字符型数据4.1字符型常量

C语言规定用单引号定界的单个字符,及单引号定界的转义字符是字符常量。

注意:转义字符仍然代表一个字符。4.2字符型变量

一个字符型变量在内存占用一个字节的空间,存放的是该字符的ASCII码。4.3字符型数据与整型数据的混合运算

因字符型数据内存存放的是该字符的ASCII码表现形式与整型数据相似,所以C规定两者可以混合运算。4.4字符串常量

C语言中用双引号括起来的多个字符。

C语言规定:存放字符串时,为其分派的存储空间比其实际字符个数多1,用于存放串结束标志字符‘\0’。所以:‘a’在内存中占1个字节;”a”在内存中占2个字节。5运算符和表达式

掌握:各种运算符的功能、对运算对象的规定、优先级别和结合性5.1基本算术运算和表达式1.基本算术运算符

涉及:+(加)、-(减)、*(乘)、/(除)、%(求余)+(正号)、-(负号)

注意:(1)

/:参与运算的两个运算对象假如都是整数,则结果取整,例:5/2的值是2

假如参与运算的运算对象中有实型数据,则结果为实型,例5.0/2的值是2.5

(2)

%:规定参与运算的两个运算对象必须是整型2.算术表达式:运算对象通过运算符连接起来的式子成为表达式,表达式值的含义。3.运算符的优先级:(详见教材附录)

由高到底依次是:(+、-)正负号运算同级、%、(/、*)同级、(+、-)同级5.2自增、自减运算符

1.++、--是单目运算,只能对变量进行自增1或自减1的运算

2.注意++、--作为前缀(先变后用)或后缀(先用后变)的区别

3.其结合性是右结合性5.3强制类型转换

【格式】(类型名)(表达式)注意表达式左右括号的作用

【功能】将表达式的值强制转换成前面括号中规定的类型

例:(float)(5/2)的值是2.0

(float)5/2的值是2.5任务三本章重点:掌握C语言常用的输入/输出函数以及顺序结构程序设计的一般方法。1.顺序结构程序概述

顺序结构程序是指程序中的语句完全按照它们的排列顺序执行。一般由四个部分组成:定义变量部分;已知变量赋值或输入部分;未知变量求值部分;输出结果部分。2.顺序结构程序的编写方法,与求解物理题很相似。变量相称于物理量,有几个物理量就定义几个变量。并明确哪些变量是已知的,哪些变量是未知的。给出已知变量的值。若已知变量有明确的值,则用赋值语句给出;否则用输入语句获得。根据已知变量与未知变量的关系,用赋值语句求得未知变量的值。输出求得的未知变量的值。3.C语句的分类赋值语句赋值语句是在赋值表达式加上分号构成的表达式语句。其一般形式为:变量=表达式;,功能是把表达式的值赋给变量。赋值语句拓展之后的一般形式为:变量=变量=…=表达式;。在变量说明中给变量赋初值和赋值语句有些不同,给变量赋初值是变量说明的一部分,在编译的时候执行,赋初值后的变量与其后的其他同类型变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。(2)

复合语句

把多个语句用“{}”括起来组成一个语句称复合语句。在程序中应把复合语句当作是单条语句。空语句4.数据的输入输出C语言自身不提供输入输出语句,输入输出语句是由某些库函数实现。数据的输出单字符输入函数putchar一般形式:putchar(字符表达式);。所在头文献:stdio.h.功能:向终端输出一个字符(即可以是可显示的字符,又可以是控制字符或其他转义字符)。格式输入函数printf格式:printf(格式控制,输出项列表);,输出项列表可以不需要。所在头文献:stdio.h.功能:按照用户指定的格式向系统隐含的输出设备输出若干个任意类型的数据。数据的输入单字符输入函数getchar一般形式:getchar();。所在头文献:stdio.h.功能:从系统隐含的输入设备输入一个字符,只能接受一个输入,假如有多个输入,只有第一个有效。getchar的返回值为输入的字符。格式输入函数scanf格式:scanf(格式控制,地址项列表);。所在头文献:stdio.h.功能:按格式控制所指的格式从标准输入设备输入数据并赋给指定的变量。任务四本章重点:掌握关系表达式、逻辑表达式的用法,if语句、switch语句的基本用法和语法格式,各种数据类型之间的互相转化,以及选择结构程序设计的基本方法。4.1关系表达式与逻辑表达式1、C语言中的关系运算符

①<(小于)

②<=(小于或等于)

③>(大于)④>=(大于或等于)

⑤==(等于)

⑥!=(不等于)2、关系表达式和关系表达式的值

由关系运算符组成的表达式称为关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。在C语言中,以1代表“真”。以0代表“假”。3、C语言中的逻辑运算符

①&&(逻辑“与”)

②||(逻辑“或”)

③!(逻辑“非”)4、逻辑表达式和逻辑表达式的值

由逻辑运算符和运算对象组成的表达式称为逻辑表达式。逻辑表达式的运算结果只有两种:1(“真”)或0(“假”)。应当注意,在判断一个量是否为“真”时,却是以非0代表“真”,以0代表“假”。4.2if语句1、含else子句的if语句语句形式:

if(表达式)

语句1

else

语句2执行过程:

先计算if后面圆括号中的表达式的值,假如表达式的值为非零,执行if子句,然后跳过else子句,去执行if语句后的下一个语句;假如表达式的值为零,跳过if子句,去执行else子句,接着去执行if语句后的下一个语句。2、不含else子句的if语句语句形式:if(表达式)

语句执行过程:

先计算if后面圆括号中的表达式的值,假如表达式的值为非零(“真”),则执行其后的if子句,然后执行if语句后的下一个语句;假如表达式的值为零(“假”),则跳过if子句,直接执行if语句后的下一个语句。

3、嵌套的if语句

if子句和else子句中可以是任意合法的C语句,当然也可以是if语句,通常称此为嵌套的if语句。内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。

在书写嵌套的if语句时,为了提高程序的可读性尽量按层缩进的书写格式来写自己的程序。

值得注意的是在执行嵌套的if语句的过程中,要特别注意if和else的匹配问题,else要与其上离它最近的未匹配的if来匹配。4.3混合运算与强制类型转换

整型、实型、字符型数据间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。

不同类型的数据进行运算时,可以运用强制类型转换运算符将一个表达式转换成所需类型。其一般形式为:

(类型名)(表达式)4.4switch语句

switch语句的一般形式:

switch(表达式)

{case常量表达式1:语句1

case常量表达式2:语句2

case常量表达式n:语句n

default:语句n+1}执行过程:

当执行switch语句时,一方面计算紧跟其后的括号中的表达式的值,然后在switch语句体内寻找与该值吻合的case标号,假如有与该值相等的标号,则执行该标号后开始的各语句,涉及在其后的所有case和default中的语句,直到switch语句体结束。假如没有与该值相等的标号,并且存在default标号,则从default标号后的语句开始执行,直到switch语句体结束。假如没有与该值相等的标号,且不存在default标号,则跳过switch语句体,什么也不做。4.5拓展:条件表达式1、条件表达式

形式:

表达式1?表达式2:表达式3

由条件表达式组成的赋值语句事实上就是一个if-else语句的简写。因此,若在if-else语句中,当表达式为“真”或“假”时,都只执行一个赋值语句,且给同一个变量赋值时,均可以用简朴的条件表达式来解决。任务五本章重点:

进一步掌握各种循环语句的要点和使用方法。

进一步掌握break和continue语句在循环语句中的作用。

可以灵活地运用各种循环语句进行综合程序设计基本知识点循环语句是指在满足指定的条件时,反复执行某个语句。反复执行的语句既可以是单个语句,也可以是复合语句。循环语句有while、do-while和for等几种类型1.

while循环

语句一般格式while(表达式)循环体语句注意:先判断循环条件再执行循环,假如循环条件不满足,循环体也许一次都不执行。2.

dowhile循环

语句一般格式do

循环体语句while(表达式);注意:先执行循环体后判断循环条件,假如循环条件不满足,循环体至少执行一次。3.

for循环语句一般格式

for(表达式1;表达式2;表达式3)语句注意:

(1)三个表达式执行得先后顺序,三个表达式的书写格式,中间用;间隔。

(2)循环体有多句,用复合语句描述。4.

break语句与continue语句注意:⑴break终止本层循环,跳出循环体。

⑵continue跳过本次循环体下面的语句,进入下一次循环。5.

三种循环语句的比较

(1)for和while语句先判断循环条件后执行循环体,do-while语句先执行循环体后再判断循环条件。

(2)while和do-while语句的条件表达式只有一个,for语句有3个。

(3)while、do-while、for可以互相替换使用。

(4)while语句多用于不需要赋初值的或者循环次数不拟定的情况。for语句多用于要赋初值或者循环次数固定的情况。do-while语句多用于至少要执行一次的循环控制。

(5)循环语句可以嵌套,循环可以并列,但不能交叉。

本章学习难点1.

注意循环中变量的初始化2.

注意书写错误导致的死循环任务六本章重点、难点:C语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运营过程中变量的值。数组元素的下标:C语言中数组元素下标的下限是固定的,总是为0;程序在执行过程中并不自动检查数组元素的下标是否越界。数组在内存中的存放形式当程序中定义了数组之后,系统将为数组在内存中分派一段连续的存储空间来存储数组元素。对于一维数组来说,数组元素以下标从小到大的顺序依次存放于内存中。对于二维数组来说,逻辑上可以把它们当作是一个矩阵结构,数组元素在内存中的排列是按照行优先原则。数组名记录了数组在内存中的首地址,其值不能改变。除字符数组外,不能直接使用数组名对数组进行整体的输入或输出。数组:由若干类型相同的数据按一定顺序存储所形成的有序集合。用某个名字标记这个集合,这个名字称为数组名。构成数组的每个数据项称为数组的元素,同一数组中的元素必须具有相同的数据类型。

6.1

一维数组的定义和引用6.1.1一维数组的定义定义一维数组的一般形式:数据类型说明符数组名[常量表达式];6.1.2一维数组元素的引用数组元素是组成数组的基本单元。数组元素也是一种变量,其标记方法为数组名后跟一个下标。下标表达了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标]6.1.3一维数组的初始化初始化的一般形式为:

类型说明符数组名[常量表达式]={值,值……值};其中在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。C语言对数组的初始化有以下几点规定:可以只给部分元素初始化。当{}中值的个数少于元素个数时,只给前面部分元素赋值。例如:

inta[10]={0,1,2,3,4};表达只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素所有赋1值,只能写为:

inta[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:

inta[10]=1;如给所有元素赋值,则在数组说明中,可以不给出数组长度。例如:

inta[5]={1,2,3,4,5};可写为:

inta[]={1,2,3,4,5};6.2二维数组6.2.1二维数组的定义二维数组定义的一般形式数据类型说明符

数组名[常量表达式1][常量表达式2];其中“常量表达式1”表达二维数组的行数,“常量表达式2”表达二维数组的列数。6.2.2二维数组元素的引用二维数组的元素也称为双下标变量,其表达的形式为:

数组名[下标][下标]其中下标应为整型常量或整型表达式。6.2.3二维数组的初始化

给二维数组的初始化重要有以下几种方式。1.分行给二维数组赋初值例如:inta[2][3]={{1,2,3},{4,5,6}};2.按数组元素在内存中排列的顺序对各元素赋初值例如:inta[2][3]={1,2,3,4,5,6};3.给部分元素赋初值例如:inta[2][3]={{1},{4}};4.假如对所有元素都赋初值,则定义数组时行长度可以省略,但列的长度不能省。

例如:inta[][3]={1,2,3,4,5,6};6.3字符数组与字符串6.3.1关于字符串C语言规定:字符串的末尾必须有'\0'字符,即'\0'字符为字符串结束标志。'\0'是一个转义字符,它的ASCII码值为0。一个字符数组中可以存放若干个字符。字符数组除了可以存放字符型数据外还可以存放字符串。6.3.2字符数组的定义一般形式:char数组名[数组长度]6.3.3字符数组的初始化1.用字符常量赋初值例如:charc[10]={'I','','a','m','','h','a','p','p','y'};则c[0]='I',…,c[9]='y'。c数组中存放的是10个字符型数据(涉及空格字符)。需要注意:当所赋初值的个数超过数组的长度时系统报错;当所赋初值的个数小于数组的长度时,剩余的元素系统自动赋予'\0',此时,可以将该数组看做是一个存放字符串的数组;对静态字符数组未被赋值的元素系统自动将其赋值为'\0'。2.用字符串常量赋初值C语言中,字符数组最常见的用法是用来解决字符串。用字符串常量来初始化字符数组重要有以下两种方法:charstr[10]={"astring"};或charstr[10]="astring";需要注意:当用字符串常量来初始化字符数组时,数组的长度至少要比字符串中的字符个数多1,所多余的一个元素用来存放字符串的结束标志'\0'。例如要存放字符串”Hello”,则需要将字符数组的长度至少设为6。当然也可以使用二维数组来存放字符串,例如:chara[3][10]={"china","Japan","USA"};表白a数组有三行,每行存放一个字符串。注意:此时的花括号不能省略。3.初始化时长度的省略在给数组初始化时,也可以省略数组的长度,系统自动根据字符个数计算出数组的长度。例如:chars[]="InputThePassword";此时由于s数组中存放的是一个字符串,而字符串中隐具有结束标记'\0',所以系统自动确认s数组长度为18。再例如:charch[]={'s','t','r','i','n','g'};此时ch数组长度为6。6.3.4字符数组的输入输出1.字符数组的输出对字符数组,其输出控制字符有两种"%c"和"%s"。%c逐个字符输出字符;%s一次输出整个字符串。2.字符数组的输入

字符数组的输入,假如使用scanf函数,其输入格式控制字符可以有两种形式,即:"%c"和"%s"。%c逐个字符输入;%s一次输入整个字符串。6.3.5字符串解决函数

C系统提供的字符串解决函数一般放string.h头文献中,所以若程序中调用字符串解决函数时,应在程序的开始应当写#include"string.h"预解决命令。1.字符串输出函数puts()函数原型:puts(str)功能:输出一个字符串,输出时将'\0'置换成'\n',因此,输出字符串后自动换行。2.字符串输入函数gets()函数原型:gets(str)功能:从键盘接受一个字符串直到回车键为止,将接受的字符串存入str数组中。3.字符串连接函数strcat()函数原型:strcat(str1,str2)功能:连接两个字符串,把str2中的字符串连接到str1字符串的后面,结果放在str1数组中。注意:字符数组str1必须足够大,以便能容纳连接后的新字符串。4.字符串复制函数strcpy()函数原型:strcpy(str1,str2)功能:将str2中的字符串复制到str1数组中。注意:字符数组str1必须足够大,以便能容纳符串str2的内容。5.字符串比较函数strcmp()函数原型:strcmp(str1,str2)功能:将str1和str2中的两个字符串自左向右按照各字符的ASCII码值逐对进行比较,直到出现不同的字符或碰到'\0'为止。6.求字符串长度函数strlen()调用格式:strlen(str)功能:测试字符串长度。函数值返回值是str中不涉及'\0'的字符个数。说明:str可以是存放字符串的字符数组名或字符串常量。任务七本章重点:用户自定义函数的定义、调用、声明及返回;函数调用时的参数传递;函数的递归调用;变量作用域与存储类别。本章难点:函数递归调用、变量存储类别。7.1库函数

库函数是由C语言编译系统预先定义好的函数,用户可直接调用。

使用库函数的注意事项:1.

熟知库函数的功能2.

合理设立库函数的参数3.

注意返回值的使用4.

程序开头应用#include包含与该库函数相关的头文献(参见教材附录)7.2用户函数的定义与调用

1.函数定义的一般形式

【格式】

类型标记符

函数名(形式参数表)/*形式参数可以没有,称为无参函数*/

{

函数声明部分;

函数语句部分;

}

一个函数即相应一定功能,假如程序中需要执行函数所完毕的功能则需对函数进行调用,

且可进行多次调用。若一个函数A调用函数B,则称函数A为主调函数,函数B为被调函数。

2.函数的调用

(1)【格式】函数名(实参列表)

(2)调用方式:独立函数语句:函数调用单独作为一个语句使用。函数表达式:函数调用出现在一个表达式中,规定函数必须返回一个拟定值。函数参数:函数调用作为另一个函数的实参,规定函数必须返回一个拟定值。7.3函数的参数和返回值

1.函数参数

实参:是调用被调函数时所使用的参数。

形参:是定义被调函数时所使用的参数。

2.实参与形参间的关系

(1)实参可以是常量、变量或表达式;形参必须是变量。

(2)实参与形参的类型、个数应一致,且一一相应。

(3)函数调用时,将实参值相应传递给形参,而形参有任何变化不会反传实参。即值的单向传递。

3.函数的返回值函数的返回值是函数调用的结果,通过return语句带回主调函数。函数类型决定函数返回值的类型,假如没有返回值则函数类型应定义为空类型(viod)。函数返回时总是返回到主调函数的调用处。7.4函数原型

C语言规定在主调函数中要对被调函数进行声明,即函数原型。

【格式】函数类型

函数名(参数类型1

参数名1,参数类型2

参数名2,……);

函数类型

函数名(参数类型1,参数类型2,……);

但以下三种情况允许在主调函数中缺省对被调函数的声明:(1)

被调函数位置在主调函数的前面;(2)

被调函数的函数类型为int或char;(3)

函数声明在所有函数之前;7.5函数的递归调用

一个函数直接或间接地调用它自身,称此函数为递归函数,递归函数的调用称为递归调用。递归函数在设立时应有一个明确的结束递归的条件。7.6变量的作用域和生存期

7.6.1.变量的作用域

1.局部变量:函数内部定义的变量,称为局部变量。仅在函数范围内有效。

2.全局变量:函数外部定义的变量,称为全局变量。从定义处开始,到程序结束有效。

注意:假如在函数中局部变量与全局变量重名则屏蔽全局变量,让局部变量起作用。

7.6.2变量的存储类别

C语言程序中的变量,按照其存储方式的不同决定了其不同的生存期。1.自动局部变量与静态局部变量的区别:(1)分派存储空间不同:自动局变分派在动态存储区中,函数调用结束释放空间;静态局变分派在静态存储区中,函数调用结束空间不释放。(2)

函数中自动局变初始化,则在每次调用函数时都重新分派空间且初始化;而静态局变初始化仅在程序编译时初始化一次,下次调用函数时保存上次调用结束时的值。2.全局变量的存储类别

(1)用extern声明全局变量

扩展全局变量的作用域。

(2)用static声明全局变量限定全局变量的作用域。任务八重点和难点分析:本章介绍了号称“C语言精华”的重要概念——指针及其使用技术。指针是C程序中概念最复杂、使用最灵活而初学者最容易犯错的而解决难点的关键在于学生切实理解各种形式指针的概念及其区别。1.变量的指针和指向变量的指针变量就是变量的地址和用来存放变量地址的地址变量。1)指针变量的定义

形式:类型标记符*标记符如:int*pointer;2)指针变量的引用两个有关的运算符:

&取地址运算符&a就代表变量a的地址

*指针运算符*a就代表变量a的值2.数组的指针和指向数组的指针变量数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。1)指向数组元素的指针变量的定义与赋值

定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。2)通过指针引用数组元素我们通常引用数组元素的形式是a[i],假如用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。3)数组名作函数参数形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中假如形参的值发生变化,则实参的值也跟着变化。3.字符串的指针和指向字符串的指针变量1)字符串的表达形式

c中字符串有两种表达形式:一种是数组:charstring[]="Ilovec!";

一种是字符指针:

char*str="Ilovec!";2)字符串指针作函数参数

事实上字符串指针就是数组的首地址。3)字符指针变量与字符数组的区别

①字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串

②对数组初始化要用static,对指针变量不用。

③对字符数组赋值,只能对各个元素赋值,不能象下面这样:

charstr[14];

str="Ilovec!";

对指针变量可以,

char*str;

str="Ilovec!";

④数组在定义和编译时分派内存单元,而指针变量定义后最佳将其初始化,否则指针变量的值会指向一个不拟定的内存段,将会破坏程序。

⑤指针变量的值是可以改变的,而字符数组名所代表的字符串首地址却是不能改变的。4.函数的指针和指向函数的指针变量

一个函数在编译时被分派一个入口地址,这个入口地址就称为函数的指针。函数名代表函数的入口地址,这一点和数组同样。我们可以用一个指针变量来存放这个入口地址,然后通过该指针变量调用函数。5.返回指针值的函数

一个函数可以带回一个整型值、字符值、实型值等,函数还可以带回一个指针型的数据,即地址。这种函数的定义形式如下:类型标记符*函数名(参数表)如:int*a(x,y)返回一个指向整型的指针6.指针数组指针数组无疑就是数组元素为指针,定义形式为:类型标记*数组名[数组长度]如:int*p[4],指针数组多用于存放若干个字符串的首地址。7定义结构体类型与结构体变量

7.1结构体类型的定义

了解结构体与数组的区别,同一数组中各元素的类型是一致的,而同一结构体

员的类型可以不同,且需要根据实际情况定义结构体类型,是一种构造类型。

结构体类型定义格式:

sturct

结构体名

{

数据类型

成员名1;

数据类型

成员名2;

……

数据类型

成员名n;

};

结构体类型是一种构造类型,系统并不为其分派存储单元。

7.2结构体类型变量的定义

定义了结构体类型后可以再定义具有该类型的变量,此时系统才为结构体变量分派存储单

元,分派的存储单元数是各成员所占空间之和。定义结构体变量一般有三种形式:(1)先定义结构体类型,再定义该类型的变量

struct

结构体名

{成员表列

};

struct

结构体名

变量名表列;

(2)定义结构体类型的同时定义结构体变量。

struct

结构体名

{

成员表列

}变量名表列;

(3)直接定义结构体变量。

struct

{

成员表列

}变量名表列;7.2结构体变量的引用和初始化

7.2.1

引用形式:结构体变量名.成员名

注意:除同类型结构体变量间可整体赋值外,其余情况需逐个引用结构体变量的各

成员;结构体类型可嵌套定义,则只能引用最低档的成员。

7.2.2

定义变量时赋初值,用大括号将各成员值括起来,各成员值之间用逗号隔开。7.3结构体指针

指向结构体变量的指针

定义一个结构体变量stu和一个同类型的指针变量p,且p=&stu,则可以通过p

访问结构体中的各个成员。

一般形式:(*结构体指针变量).成员名

结构体指针变量->成员

任务九本章的重点:C文献的概念,文献类型指针,文献的打开和关闭,文献的读写和定位技术。难点是:C文献的概念,常用读写函数。

1.文献的相关概念

所谓“文献”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文献名。文献名由两部份组成即主名和扩展名。文献通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文献作不同的分类。从用户的角度看,文献可分为普通文献和设备文献两种。2.文献指针文献的重要操作有两种即读文献(从文献中读取数据)和写文献(往文献中存储数据)。在C语言中对文献进行各种操作通过文献指针来实现。定义说明文献指针的一般形式为:

FILE*指针变量标记符;3.文献的打开与关闭文献在进行读写操作之前要先打开,使用完毕要关闭。在C语言中,文献操作都是由库函数来完毕的。在本章内将介绍重要的文献操作函数。①

文献的打开(fopen函数)

fopen函数用来打开一个文献,其调用的一般形式为:FILE*fopen(char*filename,char*mode);

说明:filename是被打开文献的文献名,应包含文献的途径;②文献关闭函数(fclose函数)

文献一旦使用完毕,应用关闭文献函数把文献关闭,以避免文献的数据丢失等错误。

fclose函数调用的一般形式是:

fclose(FILE*fp);4.文献的读写对文献的读和写是最常用的文献操作。在C语言中提供了多种文献读写的函数,下面将具体介绍。使用这些函数都规定包含头文献stdio.h。字符读写函数fgetc和fputc字符读写函数是以字符(字节)为单位的读写函数。每次可从文献读出或向文献写入一个字符。①

读字符函数fgetc

fgetc函数的功能是从指定的文献中读一个字符,函数调用的形式为:

charch=fgetc(FILE*fp);

例如:

ch=fgetc(fp);②写字符函数fputc

fputc函数的功能是把一个字符写入指定的文献中,函数调用的形式为:

fputc(charch,FILE*fp);

例如:

fputc(ch,fp);5.字符串读写函数fgets和fputs

温馨提示

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

评论

0/150

提交评论