好文档 - 专业文书写作范文服务资料分享网站

C语言复习提纲

天下 分享 时间: 加入收藏 我要投稿 点赞

int a=3,b=5; int *p,*q; p=&a; q=&b;

printf (\}

结果:8。

练习8_3:编写程序,实现从键盘输入两个数,输出时从大到小排列(利用指针概念), #include void main() {

int *p1,*p2,*p,a,b; scanf(\ p1=&a; p2=&b; if(a

{ p=p1; p1=p2; p2=p;} printf(\

printf(\}

练习8_4 有定义:int x,*p1=&x,*p2;,则能使得p2也指向x的语句是p2=p1。 练习8_5 若有定义:int i,j,*p,*q;,下面的赋值正确的是(D)

A、 *p=&i; B、 p=i; C、 i=&q; D、 p=&i; ▲三、指针与数组 ?指针和一维数组

数组名代表数组的首地址,是一个常量。

数组指针:就是指向数组元素地址的指针变量。

指向数组的指针变量可以与一个整型常量相加,或与一个整型常量相减。 ?指针和二维数组

用数组名表示二维数组的行地址 数组元素三种形式引用:

? a[i][j] 下标法

? *(a[i]+j) 用一维数组名 ? *(*(a+i)+j) 用二维数组名 ?指针数组

指针数组:数组的所有元素都是存放指针的数组称为指针数组。 即:指针数组中每一个元素(下标变量)都是指针变量。 指针数组的定义形式:

<存储类型> <数据类型> <*指针数组名>[数组长度][={地址列表}];

练习8_6 有定义:int a[6], *p1=a, *p2=p1;,则能够正确表示元素a[2]的是*(p2+2)或者*(p1+2)。

练习8_7 若已定义:int a[9],*p=a;,则表示a[1]地址的表达式是p+1(或a+1或++p)。 练习8_8 有定义:int a[10][10],*p=a[0],i,j;,其中i和j表示数组元素下标并在数组允许范围内,那么能够正确引用元素a[i][j]地址值的是*(p+i)+j或*(a+i)+j。

4、指针与字符串

?将字符串的首地址赋给指针,用字符指针变量来处理字符串。 ?字符指针变量与字符指针数组

- 26 -

字符数组和字符指针变量都能实现字符串的存储与运算,但两者之间还是有区别的,主要包括以下几点:

①字符数组由若干元素组成,每个元素存放一个字符; 字符指针变量存放的是字符串的首地址。 ②赋值方式不同:

不能用赋值语句给字符数组赋值。 char str[14];

str=“I love china!” 这是错误的。 字符指针变量可以采用下面的形式赋值: char *p;

p=“china!” 这是正确的。

但要注意赋给指针变量p的不是字符串,而是字符串的首地址。 定义一个数组,在编译时分配存放n个元素的存储空间; 定义指针变量只分配存放一个地址的空间。 练习8_9 写出下列程序的运行结果。 #include int *x; void main() {

void fun(int *x); int *p,y; y=3; p=&y; fun(p);

printf(\}

void fun(int *x) {

*x=9; }

结果:y=9。

练习8_10 写出下列程序的运行结果。 #include void main() { void swap(int x,int *y); int a=5,b=10; swap(a,&b); printf(\}

void swap(int x,int *y) { int t; t=x; x=*y; *y=t; }

运行结果5,5

- 27 -

第九章 结构体、共用体与枚举类型

▲一、结构体

结构体是用户自定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义的数据项(当然也可以相同),从而使这些数据项组合起来反映某一个信息。

1、定义一个结构体类型的一般形式为: struct 结构体名 {

数据类型 成员名1; 数据类型 成员名2; ??

数据类型 成员名n; };

例如:定义一个职工worker结构体如下: struct worker { long number; char name[20];

char sex; //sex是成员名 int age;

float salary; char address[80];

char phone[20]; }; //注意分号不要省略 int sex=10; //sex是变量名 2、结构体类型变量的定义方法

? 先定义结构体类型再定义变量名:struct 结构体名 变量名 ? 在定义结构体类型的同时定义变量。

注意:结构体的定义可以嵌套,即在结构体内还可以定义结构体。结构体中的成员也可以是一个结构体变量。

3、结构体变量的引用和初始化

? 结构体变量的引用:结构变量不能整体引用,只能引用其成员,一般形式为:结构体变量名.成员名。

? 结构体变量的初始化:struct 结构体名 变量名={初始数据表}; 或

struct 结构体名 {

成员列表;

}变量名={初始数据表}; 注意:

①结构体是一种构造数据类型,是数目固定,类型不同的若干有序变量的集合。 ②结构体变量占据的内存空间大小等于所有成员占据的内存空间之和。 二、共用体

1、共用体的概念

在C语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。

2、定义一个共用体类型的一般形式为: union 共用体名 {

成员列表; };

- 28 -

3、共用体变量的定义

? 先定义共用体类型再定义共用体变量:union 共用体名 变量名 ? 在定义共用体类型的同时定义变量。 练习9_1 写出下列程序的运行结果 #include void main() {

union data {

int i; char ch; float f; }a,b,c; a.i=9; b=a; c=b;

printf(\}

练习9_2写出下列程序的运行结果 #include void main() { int z; union data { int x;

int y;

}a; a.x=3; a.y=6;

z=a.x+a.y;

printf(\}

结果:z=12 注意:

①共用体变量任何时刻只有一个成员存在。

②共用体变量定义分配内存,长度=最长成员所占字节数。 三、枚举

1、枚举的概念

枚举就是指将某一变量所有可能的取值一一列举出来。 2、枚举的定义:

enum 枚举类型名{枚举元素表}枚举变量名 3、枚举变量的定义

? 在定义枚举类型的同时,定义枚举类型的变量。 ? 已定义过的枚举数据类型定义枚举变量,格式为: enum 枚举名称 变量名表

练习9_3(若有定义enum name{a,b,c=1,d};则枚举常量a,d的值分别是0,2。 注意:

- 29 -

①枚举元素是常量,不能在程序中用赋值语句再对它赋值 ;

②枚举元素作为常量是有值的,编译系统按定义时的顺序使它们具有顺序整数值:0,1,2,??; ③在定义枚举类型中,可在枚举数据时通过“=”来对枚举元素进行初始化(指定一个整型值),并影响后面的枚举元素的值,后继序号以此递增;

③枚举元素不是字符常量也不是字符串常量,不能直接输入输出,可在过程中通过判断和强制类型转换来实现输入输出;

④枚举变量只能取对应枚举类型的枚举元素表中的元素; ⑤枚举元素表中的元素有先后次序,可以进行比较。 四、类型定义typedef的使用

用typedef定义新的类型名代替已有的类型名。 ?、格式:typedef 数据类型 新的名称

?、类型定义一般为大写,与原来的数据类型关键相区别

?、类型定义只是给已存在的数据类型增加一个类型名,并没有创造一个新的数据类型。 注意:

①使用typedef可以定义各种类型名,但不能用来定义变量;

②使用用typedef只是将已存在的类型用一个新的名称来代表,并不是定义了一种新的数据类型;

③使用typedef便于程序的通用。

第十章 文件

一、文件指针:

1、文件指针:C语言系统对文件的操作必须通过一个指向“FILE类型”的指针来实现,我们称这种指针为 “文件指针”。

二、文件位置指针

C语言规定:每一个文件都必须设置一个位置指针(文件指针)来控制文件的访问位置,其规律如下。

◆ 文件打开时指针自动指向文件的开始位置;

◆ 每读取一个单元内容文件位置指针自动顺序向后移动一定的偏移量(该偏移量的字节数由所读取单元的数据类型决定);

◆ 读到文件的结尾,则文件的位置指针指向一个特殊的位置——EOF。

◆ 对文件进行顺序写操作时,数据写入到文件位置指针所指向的位置。写入后文件位置指针自动向后移动到一个新的位置,等待下一次的写入操作。

◆ 可将文件位置指针移动到任何位置,实现对文件的随机读写访问。 三、文件的打开——打开文件函数fopen()

打开文件使用fopen()函数实现。打开文件格式为: FILE *fp;

fp= fopen(文件名,使用方式);

文件名:为包含访问路径的文件名字符串。 在C语言中,对文件操作必须先打开文件。若执行fopen()时发生错误,则函数的返回值是NULL或0。

四、关闭文件函数fclose()

文件操作结束前,必须关闭文件。

关闭文件使用fclose()函数。格式如下: fclose(文件指针) ;

其中的“文件指针”参数,就是保存打开文件操作时fopen函数返回值的FILE指针变量。 关闭文件的含义就是执行fclose()函数,先释放文件指针,后写缓冲区的数据到文件中。 当顺利执行了文件关闭操作时,fclose()返回值是0,否则返回-1。

- 30 -

C语言复习提纲

inta=3,b=5;int*p,*q;p=&a;q=&b;printf(\}结果:8。练习8_3:编写程序,实现从键盘输入两个数,输出时从大到小排列(利用指针概念),#includevoidmain(){int*p1,*p2,*p,a,b;sc
推荐度:
点击下载文档文档为doc格式
7jy0v7n1qc7916195czw
领取福利

微信扫码领取福利

微信扫码分享