数组指针字符串C语言程序设计-

上传人:宝路 文档编号:48103260 上传时间:2018-07-09 格式:PPT 页数:132 大小:326.57KB
返回 下载 相关 举报
数组指针字符串C语言程序设计-_第1页
第1页 / 共132页
数组指针字符串C语言程序设计-_第2页
第2页 / 共132页
数组指针字符串C语言程序设计-_第3页
第3页 / 共132页
数组指针字符串C语言程序设计-_第4页
第4页 / 共132页
数组指针字符串C语言程序设计-_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《数组指针字符串C语言程序设计-》由会员分享,可在线阅读,更多相关《数组指针字符串C语言程序设计-(132页珍藏版)》请在金锄头文库上搜索。

1、程序设计语言 (C) 王正杰第四章 数组、指针与字符串本章重点数组的定义、初始化和使用;指针的 定义、访问和运算;指针与数组和函数的联系 ;字符串与数组和指针的关系;结构体的应用 ;几种常用的算法和数据结构。 本章难点指针的定义、赋值和运算;数组、字 符串、结构体的操作以及动态存储分配。 在C中,除了前面介绍的基本类型外,还有 一种用基本类型数据按一定的规则组成的构 造类型,构造类型的每一个分量可以是一个 简单的类型变量,也可以又是一个构造类型 的变量,它们可以像简单变量一样使用。C语 言的构造类型有数组、结构体、共同体等。 指针是C语言区别于其他程序设计语言的主要 特征,指针可用于有效的表示

2、数据之间复杂 的逻辑关系,也可用于动态分配内存,还可 以简单有效地处理数组。用来存放字符串的 数组是字符数组,除了用访问数组的方式来操纵字符串外,我们还可以利用指针来使 用字符串。本章将介绍典型的构造类型 数组和结构体,以及与数组和结构体密 切相关的指针和字符串。 数组是具有一定顺序关系的若干相同类型 变量的集合体,组成数组的变量称为该数 组的元素。 一维数组通常用于表示由固定多个同类型 的具有线性次序关系的数据所构成的复合 数据,如向量、某个学生的各门课成绩、 学生的姓名表等。在语言中使用数组必 须先进行定义,一维数组的定义形式为: 存储类型说明符 数据类型标识符 数组名 常量表达式; in

3、t a5; 数组名是用户定义的数组标识符,数组名 的命名规则要遵循标识符命名规则。方括 号中的常量表达式表示数组元素的个数, 也称为数组的长度。 对于数组定义应注意以下几点:1)数组的 类型实际上是指数组元素的取值类型。对 于同一个数组,其所有元素的数据类型都 是相同的。2)数组名不能与其它变量名相 同。3)不能在方括号中用变量来表示元素 的个数,可以用符号常数或常量表达式, 如arrry10表示数组arrry有 10个元素,其 下标从0开始。 一维数组的初始化数组的初始化就是在定义的同时,给部分 或全部元素赋值,一维数组的初始化的格 式是: 数据类型标识符 数组名常量表达式=初 值表; 其中

4、,初值表用一对花括号括起,每个初 始值之间用逗号隔开。例如: int array5= 1,2,3,4,5; 该语句定义了一个包含5个整型元素的数组 array并对其进行了初始化,初始化后array 0=1、array1=2、array2=3、 array3=4、array4=5。 初值表元素的数量可以少于数组长度,也 就是可以只对数组的部分元素赋初值。例 如: int array5=1,2,3; 初始化后前三个元素的值为array 0=1、 array1=2、array2=3,其余没赋初值的 元素的值都为0,即array3=0、 array4=0。 也可以省略数组长度,例如: int arra

5、y= 1,2,3,4,5; 初始化后数组的长度为5。 一维数组的访问像普通变量一样,数组定义之后,就可以 在程序中访问数组中的元素。我们只能逐 个访问其中的元素,对于数组元素的访问 可以通过以下形式表示:数组名下标 int array5= 1,2,3,4,5; a=array3; array3=6; void main() int array5,i ;/使用循环语句对数组的5个元素分别赋值for (i=0; iaj) tag=j; /标记小元素的下标 /将当前未排好序数组的最小元素atag/和元素ai交换 buffer=atag; atag=ai; ai=buffer;void main()

6、int array10=6,2,10,3,7,5,9,4,8,1,i; coutai+1)t=ai;ai=ai+1;ai+1=t;cout x; splitfloat(x, /变量地址做实参 cout ab;pointer_1= pointer_2=coutq表示p处于高地址位置 ;pij;couta; coutb;c=pmin(a,b); /通过函数指针调用函数 min /可以写成(*pmin)(a,b) couta;coutb;p=compute(a,b);/调用函数,p和result指向同一内 存 if(p) /如果result申请的空间得到了允许 /利用指针p依次输出计算结果 cout

7、length; parr=new floatlength; /申请长度为length的float 数组if(parr) /如果内存分配成功,继续输入数 据 else coutparri; coutasc; if(asc=A cout”。指向 运算符“-”与成员运算符“.”都是双目运算 符,而且它们优先级都是所有运算符当中 最高的,不同的是指向运算符“-”左边的 操作数是结构指针,右边的操作数是该结 构的一个成员。第三条语句更多的是使用 指向运算符“-”来完成: ps-num=20061001; 以线性表中第一个数据元素 的存 储地址作为线性表的地址,称作线性表 的头指针。头结点a1 a2 .

8、an 头指针头指针有时为了操作方便,在第一个结点之前 虚加一个“头结点”,以指向头结点的指针为链表的头指针。空指针线性表为空表时, 头结点的指针域为空例如:逆位序输入 n 个数据元素的值,建立带头结点的单链表。操作步骤: 一、建立一个“空表”;二、输入数据元素an,建立结点并插入;三、输入数据元素an-1,建立结点并插入;anan an-1四、依次类推,直至输入a1为止。带表头节点的单链表的基本操作 #define LEN sizeof(struct student) struct student long num;float score;struct student *next; ;stru

9、ct student *creat(void) /此函数带回一个指向链表头的指针int n=1;struct student *head;struct student *p1,*p2;head=( struct student*) malloc(LEN); /申请单元*/head-next=NULL;p1=(struct student*)malloc(LEN);coutp1-nump1-score;free(p1);return(head); while(p1-num!=0)p1-next=head-next;head-next=p1;p1=(struct student*)malloc(L

10、EN);coutp1-nump1-score;void print1(struct student *head) coutnext;while (head)coutnumscorenext; main() struct student *head;/调用creat函数后建立了一个单向动态链 表head=creat() ;print1(head); 插入操作eai-1aiai-1sp删除操作ai-1aiai+1ai-1本章小结 数组是一个由若干同类型变量组成的 集合,它在内存中由连续存储单元组 成,数组名本身就是指向这个起始地 址的指针,所以数组作为参数传递时 实际上传递的是地址。数组应用十分 广泛,排序查找和字符串是其典型的 应用;字符串数组实际上是元素是字 符型的数组,由于C语言中字符串以 0作为结束符,所以字符数组尺寸要 比实际字符串包含的字符数多一个字 节; 指针是C语言的重要特征之一,从本 质上看,指针即变量在内存中的存储 地址,它的使用可以使程序员直接对 内存地址进行操作,提高程序的运行 速度,还可以使用new和delete动态 分配内存空间;结构体是重要的用户 定义的数据类型,应用十分广泛,利 用指向结构体的指针可以实现链表、 二叉树等复杂的数据结构。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号