1 / 25
文档名称:

程序设计基础.ppt

格式:ppt   大小:1,389KB   页数:25页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序设计基础.ppt

上传人:晓星星 2022/4/6 文件大小:1.36 MB

下载得到文件列表

程序设计基础.ppt

相关文档

文档介绍

文档介绍:程序设计基础
第5章 指针与数组
学****目标
理解指针、地址和数组的概念
学会使用数组和字符数组
学会指针运算的方法和技巧
学会指针作为函数参数的用法
理解函数的指针和返回指针值的函数
了解指针与二维数组配合的编程方法
了解“指针的除了逐个元素(字符)输入输出外,还可以用”%s”格式符整体输入/输出
④输出字符不包括结束符’\0’
*
*
数 组(4)
①二维数组的定义。一般语法形式为:
类型说明符 数组名[常量表达式][常量表达式]
②二维数组的理解:可以把二维数组看成是一个一维数组,这个一维数组的每个元素又是一维数组
③二维数组的元素在内存中的存放循序。按行存放
④二维数组中元素的引用。用数组名和下标引用元素
⑤二维数组的初始化
多维数组的一般语法形式为:
类型  数组名[第n维长度][第n-1维长度]......[第1维长度]
*
*
数组的指针
指向一个数组的指针称为数组指针,可把数组名或第一个元素的地址赋予它
一个指针变量既可以指向一个数组,也可以指向一个数组元素,如果指针指向了数组,也就是指向了数组的第一个元素(首地址)
当使指针p指向数组a后,可以用指针p访问数组的各个元素
指针和数组在访问内存地址中的数据时,其表达形式具有相同意义。 但指针与数组名具有本质上的不同,数组名是地址,也可理解为指针常量,而指针是地址变量。 指针在使用前必须先赋予一定的地址值
指针
用指针取值
元素
p →
*(p+0)
a[0]
p+1→
*(p+1)
a[1]
p+2→
*(p+2)
a[2]



p+i→
*(p+i)
a[i]



p+9→
*(p+9)
a[9]
指针引用数组元素
*
*
字符串的指针
字符串的指针,又称字符指针,本身是一个变量,用于存放字符串的首地址
字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束
字符串虽然是字符数组,但是字符数组和字符指针的概念不同,用字符串指针方式与字符数组方式使用字符串时是有区别的,两者的意义如图
初始化赋值
字符串指针方式: char *ps; ps=" Student personnel file";
对数组方式: char st[] = {"Student personnel file"};
*
*
指针数组(1)
指针数组是一个数组,该数组中的每一个元素是指针变量。其一般语法形式为:
类型标识符 *数组名[数组元素个数]例如:
int * p[4];
定义了一个指针数组,数组名p,有4个元素, 每一个元素是指向整型变量的指针
int (*p)[4]; /* 指向数组的指针 */
这句定义一个指针变量,它指向有4个元素的一维数组
*
*
指针数组(2)
指针数组主要用于处理多个字符串。字符串本身是一维数组,多个字符串可以用二维数组来处理,但会浪费许多内存。用指针数组处理多个字符串,不会浪费内存。
如要将7个国名并按字母顺序排列后输出,一种方法是采用普通的排序方法, 逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。反复的交换将使程序执行的速度很慢,同时由于各字符串(国名) 的长度不同,又增加了存储管理的负担。另一种较好的方法是使用指针数组,排序前后指针的指向情况见图。把所有的字符串存放在一个数组中,把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时, 只须交换指针数组相应两元素的内容(地址)即可,而不必交换字符串本身。下图为排序前后示意图:
*
*
* 指针的指针
指向指针的指针变量说明的一般语法形式为:
类型说明符 ** 指针变量名;
例如:右图首先定义说明了指针数组ps并作了初始化赋值。 又说明了pps是一个指向指针的指针变量。在5次循环中, pps 分别取得了ps[0],ps[1],ps[2],ps[3],ps[4]的地址值(如图5-10所示)。再通过这些地址即可找到该字符串
*
*
指针与多维数组(1)
简单指针变量引用多维数组的元素
一般地,若需访问二维数组a[n][m](n行m列)的某个元素a[i][j],计算该元素的相对位置公式为:
i*m+j (i,j=0,1,2, ...)
相当于把二维数组转化为一维数组来使用
如: