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

下载本文档

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

文档简介

任务一

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

C程序的组成

(1)C程序由函数组成,函数是C程序的基本单位。

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

本单位。

(2)一个函数由函数首部和函数体两部分组成

函数首部包括函数类型、函数名、函数的参数阐明等。

例如:

intmax(intx,inty)

函数体是函数首部下面用一对{}括起来的部分。一般包括变量定义部分和语句执行部分。变量定义部分定义函数

内部所用变量,语句执行部分要求函数所要执行的动作。

(3)无论main函数在整个程序中的位置怎样,C语言程序总是从main函数开始执行的,主函数执行完成,

整个程序结束运行。

(4)书写格式自由,一行能够写多个语句,一个语句也能够写在多行上,但每条语句或数据定义的最后必须有

一个分号“;”,作为语句的结束标志。

(5)可用"/*……对C程序中的任何部分作注释。

(6)预处理命令一般应放在源文献或源程序的最前面。

(7)VisualCH60是集编辑、编译链接和执行于一体的软件。

(8)C语言源文献的扩展名是.c>

任务二

本章重点:掌握变量的定义,掌握各种运算符的特点及体现式的正确引用以及各种数据类型之间的相互转换。

本章难点:各种数据类型的存储形式、相互转换及各种体现式的正确引用

1数据类型

C语言中提供了丰富的数据类型,其中整型、实型和字符型是基本数据类型,通过基本数据类型可再结构其

他更复杂的数据类型。

1.1标识符

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

C语言要求标识符只能由字母,数字、下划线三种字符组成,并且第一个字符必须是字母或下划线,同时C

语言严格辨别大小写。标识符分三类:核心字、预定义符和用户标识符

1.2变量

注意:变量名、变量值、变量存储空间(变量内存单元)三者的区分与关系

1.变量的定义

变量必须先定义再使用。

【格式】:数据类型变量名列表;

2.变量的赋值

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

1.3常量

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

1.直接常量

直接在程序中使用的常量,依照字面意义可进行辨别。

2.符号常量

【定义格式】#define符号常量标示符常量值

例:#definePI3.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.25E2

3.2实型变量

1.分类:单精度(float)>双精度(double)、度(longdouble)

2.实型数据的舍入误差

使用时注意不一样类型的有效位问题,防止出现舍入误差

4字符型数据

4.1字符型常量

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

注意:转义字符仍然代表一个字符。

4.2字符型变量

一个字符型变量在内存占用一个字节的空间,存储的是该字符的ASCII码。

4.3字符型数据与整型数据的混合运算

因字符型数据内存存储的是该字符的ASCII码体现形式与整型数据相同,因此C要求二者能够混合运算。

4.4字符串常量

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

c语言要求:存储字符串时,为其分派的存储空间比其实际字符个数多1,用于存储串结束标志字符'\0'。因

此:匕‘在内存中占1个字节;七”在内存中占2个字节。

5运算符和体现式

掌握:各种运算符的功效、对运算对象的要求、优先级别和结合性

5.1基本算术运算和体现式

1.基本算术运算符

包括:+(加)、・(减)、*(乘)、/(除)、%(求余)+(正号)、・(负号)

注意:⑴/:参加运算的两个运算对象假如都是整数,则成果取整,例:5/2的值是2

假如参加运算的运算对象中有实型数据,则成果为实型,例502的值是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语言常用的输入端i出函数以及次序结构程序设计的一般措施。

1.次序结构程序概述

次序结构程序是指程序中的语句完全按照它们的排列次序执行。一般由四个部分组成:

1.定义变量部分;

2.已知变量赋值或输入部分;

3.未知变量求值部分;

4.输出成果部分。

2.次序结构程序的编写措施,与求解物理题很相同。

1.变量相称于物理量,有几个物理量就定义几个变量。并明确哪些变量是已知的,哪些变量是未知的。

2.给出口知变量的值。若己知变量有明确的值,则用赋值语句给出;否则用输入语句取得。

3.依照已知变量与未知变量的关系,用赋值语句求得未知变量的值。

4.输出求得的未知变量的值。

3.C语句的分类

1.赋值语句

赋值语句是在赋值体现式加上分号组成的体现式语句。其一般形式为:变量=体现式;,功效是把体现式的

值给变量。

■赋值语句拓展之后的一般形式为:变量=变量一.尸体现式:。

■在变量阐明中给变量赋初值和赋值语句有些不一样,给变量赋初值是变量阐明的一部分,在编译的时候

执行,赋初值后的变量与其后的其他同类型变最之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。

(2)复合语句

把多个语句用“C”括起来组成一个语句称复合语句。在程序中应把复合语句当作是单条语句。

1.空语句

4.数据的输入输出

C语言自身不提供输入输出语句,输入输出语句是由某些库函数实现。

1.数据的输出

,单字符输入函数putchar

1.一般形式:putchar(字符体现式)…

2.所在头文献;stdio.h.

3.功效:向终端输出一个字符(即能够是可显示的字符,又能够是控制字符或其他转义字符)。

,格式输入函数printf

1.格式:printf(格式控制,输出项列表);,输出项列表能够不需要。

2.所在头文献:stdio.h.

3.功效:按照用户指定的格式向系统隐含的输出设备输出若干个任意类型的数据。

4.数据的输入

,单字符输入函数getchar

1.一般形式:getchar。;。

2.所在头文献:stdio.h.

3.功效:从系统隐含的输入设备输入一个字符,只能接收一个输入,假如有多个输入,只有第一个有效。

getchar的返回值为输入的字符。

,格式输入函数scant

1.格式:scant(格式控制,地址项列表)

2.所在头文献:stdio.h.

功效:按格式控制所指的格式从标准输入设备输入数据并赋给指定的变量。

任务四

本章重点:掌握关系体现式、逻辑体现式的使用方法,if语句、swtch语句的基本使用方法和语法格式,各种数

据类型之间的相互转化,以及选择结构程序设计的基本措施。

4.1关系体现式与逻辑体现式

1、C语言中的关系运算符

(D<(小于)®<=(小于或等于)(3>>(不小于)

©>=(不小于或等于)@==(等于)⑥!=(不等于)

2、关系体现式和关系体现式的值

由关系运算符组成的体现式称为关系体现式。关系体现式的值是一个逻辑值,即“真”或“假”。在C语言中,

以1代表“真:以0代表“假工

3、C语言中的逻辑运算符

®&&(逻辑“与”)②II(逻辑“或”)③(逻辑“非”)

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

I

I

case常量体现式n:语句n

default:语句n+1

)

执行过程:

当执行swRch语句时,首先计算紧跟其后的括号中的体现式的值,然后在switch语句体内寻找与该值吻合

的case标号,假如有与该值相等的标号,则执行该标号后开始的各语句,包括在其后的所有case和default中

的:吾句,直到switch语句体结束。假如没有与该值相等的标号,并且存在default标号,则从default标号后的语

句开始执行,直到sw肥h语句体结束。假如没有与该值相等的标号,且不存在default标号,则跳过sw让ch语句

体,什么也不做。

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.breakcontinue

注意:(l)break终止本层循环,跳出循环体。

(2)coEinue跳过本次循环体卜面的语句,进入下一次循环。

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.注意书写错误导致的死循环

任务六

本章重点、难点:

1.C语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。

2.数组元素的下标:C语言中数组元素下标的下限是固定的,总是为0;程序在执行过程中并不自动检查

数组元素的下标是否越界。

3.数组在内存中的存储形式

当程序中定义了数组之后,系统将为数组在内存中分派一段连续的存储空间来存储数组元素。

对于一维数组来说,数组元素如下标从小到大的次序依次存储于内存中。对于二维数组来说,逻辑上能够把

它们当作是一个矩阵结构,数组元素在内存中的排列是按照行优先标准。

数组名统计了数组在内存中的首地址,其值不能变化。除字符数组外,不能直接使用数组名对数组进行整体

的输入或输出。

数组:由若干类型相同的数据按一定次序存储所形成的有序集合。用某个名字标识这个集合,这个名字称为

数组名。组成数组的每个数据项称为数组的元素,同一数组中的元素必须具备相同的数据类型。

6.1一维数组的定义和引用

6.1.1一维数组的定义

定义一维数组的一般形式:

数据类型阐明符数组名[常量体现式];

6.1.2一维数组元素的引用

数组元素是组成数组的基本单元。数组元素也是一个变量,其标识措施为数组名后跟一个下标.下标表示了

元素在数组中的次序号。

数组元素的一般形式为:数组名[下标]

6.1.3一维数组的初始化

初始化的•般形式为:

类型阐明符数组名[常量体现式卜{值,值……值};

其中在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。

C语言对数组的初始化有如下几点要求:

1.能够只给部分元素初始化。

当{}中值的个数少于元素个数时,只给前面部分元素赋值。

例如:

inta[10]={0,1,2,3,4};

表示只给a[0]-a[4]5个元素赋值,而后5个元素自动赋0值。

1.只能给元素逐一赋值,不能给数组整体赋值。

例如给十个元素所有赋1值,只能写为:

inta[10]={1,1,1,1,1,1,1,1,1,1};

而不能写为:

inta[10]=1;

1.如给所有元素赋值,则在数组阐明中,能够不给出数组长度。

例如:

inta[5]={1,2,3,4,5);

可写为:

inta[]={123,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,234,5,6};

3.给部分元素赋初值

例如:

inta[2][3]={{1},{4});

4.假如对所有元素都赋初值,则定义数组时行长度能够省略,但列的长度不能省。

例如:

inta[][3]={1,2,3,4,5,61;

6.3字符数组与字符串

6.3.1有关字符串

C语言要求:字符串的末尾必须有、0,字符,即字符为字符串结束标志。'0'是一个转义字件,它的ASCII

码直为0。

•个字符数组中能够存储若干个字符。字符数组除了能够存储字符型数据外还能够存储字符串。

6.3.2字符数组的定义

一般形式:char数组名[数组长度]

6.3.3字符数组的初始化

1.用字符常量赋初值

例如:

charc[10]={T,'a'E,二忙匕加,0加;

则c[0]=甲,…,c[9]='y'oc数组中存储的是10个字符型数据(包括空格字符)。

需要注意:当所赋初值的个数超出数组的长度时系统报错;当所赋初值的个数小于数组的长度时:剩余的元素系

统刍动赋予'0',此时,能够将该数组看做是一个存储字符串的数组;对静态字符数组未被赋值的元素系统自动将

其赋值为10'。

2.用字符串常量赋初值

C语言中,字符数组最常见的使用方法是用来处理字符串。用字符串常量来初始化字符数组重要有如下两种措

施:

charstr[10]={"astring"};

或charstr[10]="astring";

需要注意:当用字符串常量来初始化字符数组时,数组的长度最少要比字符串中的字符个数多1,所多出的一个

元素用来存储字符串的结束标志、0;例如要存储字符串"Hell。",则需要将字符数组的长度最少设为6。

当然也能够使用二维数组来存储字符串,例如:

chara[3][10]={"china","Japan","USA"};

表白a数组有三行,每行存储一个字符串。注意:此时的花括号不能省略。

3.初始化时长度的省略

在给数组初始化时,也能够省略数组的长度,系统自动依照字符个数计算出数组的长度。

例如:chars[]="InputThePassword";

此时因为s数组中存储的是一个字符串,而字符串中隐含有结束标识V)',因此系统自动确认s数组长度为18。

再例如:charch[]={'s',t,r,T,'n\'g');此时ch数组长度为6。

6.3.4字符数组的输入输出

1.字符数组的输出

对字符数组,其输出控制字符有两种%C"和"%S"。%C逐一字符输出字符;%S一次输出整个字符串。

2.字符数组的输入

字符数组的输入,假如使用scanf函数,其输入格式控制字符能够有两种形式,即:”%c"和“%s"0%c逐一

字符输入;%s一次输入整个字符串。

6.3.5字符串处理函数

C系统提供的字符串处理函数一般放string.h头文献中,因此若程序中调用字符串处理函数时,应在程序的开始

应当写#include"string.h"预处理命令。

1.字符串输出函数puts()

函数原型:puts(str)

功效:输出一个字符串,输出时将1\0'置换成因此,输出字符串后自动换行。

2.字符串输入函数gets()

函数原型:gets(str)

功效:从键盘接收一个字符串直到回车键为止,将接收的字符串存入str数组中。

3.字符串连接函数strcat()

函数原型:strcat(str1,str2)

功效:连接两个字符串,把str2中的字符串连接到st"字符串的背面,成果放在sE数组中。注意:字符数组

strl必须足够大,以便能容纳连接后的新字符串。

4.字符串复制函数strcpy()

函数原型:strcpy(str1,str2)

功效:将str2中的字符串复制到st"数组中。注意:字符数组strl必须足够大,以便能容纳符串str2的内容。

5.字符串比较函数strcmp()

函数原型:strcmp(str1,str2)

功效:将Stn和str2中的两个字符串自左向右按照各字符的ASCII码值逐对进行比较,直到出现不一样的字符或

遇到,\0,为止。

6.求字符串长度函数strlen()

调用格式:strlen(str)

功效:测试字符串长度。函数值返回值是str中不包括^的字符个数。

阐明: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)o函数返回时总是返回到主调函数的调用处。

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此假如用指针能够这么引用,*(a+i),或定义一个指针变量p,将数组a的首

地址赋给p,p=a;然后用*(闻)引用。

3)数组名作函数参数

形参数组和实参数组之间并不是值传递,而是共用同一段地址,因此在函数调用过程中假如形参的值发生变化,

则实参的值也跟着变化。

3.字符串的指针和指向字符串的指针变量

1)字符串的表示形式

c中字符串有两种表示形式:一个是数组:charstring[]="llovec!”;

一个是字符指针:char*str="llovecl";

2)字符串指针作函数参数

实际上字符串指针就是数组的首地址。

3)字符指针变量与字符数组的区分

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

符串

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

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

charstr[14];str="llovec!";

对指针变量能够,

char*str;str="llovec!”;

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

确定的内存段,将会破坏程序。

⑤指针变量的值是能够变化的,而字符数组名所代表的字符串首地址却是不能变化的。

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,且口=&8人则能够通过P来访问结构体中

的各个组员。

一般形式:。结构体指针变量).组员名或结构体指针变量,组员

任务九

本章的重点:C文献的概念,文献类型指针,文献的打开和关闭,文献的读写和定位技术。

难点是:C文献的概念,常用读写函数。

1.文献的有关概念

所谓“文献”是指一组有关数据的有序集合。这个数据集有一个名称,叫做文献名。文献名由两部份组成即主名

和扩展名。文献一般是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不一样的角度可对文献作

不一样的分类。从用户的角度看,文献可分为一般文献和设备文献两种。

2.文献指针

文献的重要操作有两种即读文献(从文献中读取数据)和写文献(往文献中存储数据)。在C语言中对文献进行

各种操作通过文献指针来实现。

定义阐明文献指针的一般形式为:

FILE*指针变量标识符;

3.文献的打开与关闭

文献在进行读写操作之前要先打开,使用完成要关闭。在C语言中,文献操作都是由库函数来完成的。在本章内

将简介重要的文献操作函数。

①文献的打开(fopen函数)

fopen函数用来打开一个文献,其调用的•般形式为:

FILE*fopen(char*filename,char*rrode);

阐明:filename是被打开文献的文献名,应包括文献的途径;

②文献关闭函数(fclose函数)

文献一旦使用完成,应用关闭文献函数把文献关闭,以防止文献的数据丢失等错误。

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

fclose(FILE*fp);

4.文献的读写

对文献的读和写是最常用的文献操作。在C语言中提供了多个文献读写的函数,下面将详细简介。使用这些函数都

要求包括头文献stdio.h。

字符读写函数fgetc和fputc

字符读写函数是以字符(字节)为单位的读写函数。每次可从文献读出或向文献写入一个字符。

①读字符函数fgetc

fgetc函数的功效是从指定的文献中读一个字符,函数调用

温馨提示

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

评论

0/150

提交评论