网站大量收购闲置独家精品文档,联系QQ:2885784924

7内存单元的地址-指针程序设计.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级语言程序设计 第7章 内存单元的地址 —指针程序设计(2) 二维数组批量数据处理的指针版 问题描述: 假设有全班60个人3门课程数学、英语、计算机的成绩数据,包括学号,试按每个人的总分对其降序排序。 分析 设已经定义了数组 int num [M], grade [M] [N], total[M]={0}; 要通过input函数获得用户键盘输入的数据 然后用chooseSort函数排序, 再用print函数打印输出排序的结果 期望使用三个函数, 其原型为 void input (int num[], int grade[ ][3],int total[ ]); void chooseSort (int num[ ], int grade[ ][3], int total[ ]); void print (const int num[ ], const int grade[ ][3], const int total[ ]); 或者 void input (int *num, ?int *grade, int *total); void chooseSort (int *num, ?int *grade, int *total); void print (const int *num, ?const int *grade; const int *total); 其中指向二维数组grade的指针如何定义和表示还不明确 然后 通过指针访问一维数组或二维数组的元素 实现读写数据 指针与二维数组的关系 二维数组名与行列地址 注意关于二维数组下面的事实 用指针访问二维数组元素的第一种方法 由前面分析的结果可以看出,直接把二维数组名作为行地址的行地址进行行列偏移既可以访问二维数组的元素 即 *(*(a+i)+j) 如果定义成指针参数该是什么样的指针呢? void input(int *pNum, int *pGrade, int *pTotal); int *pGrade说明的pGrade能指向二维数组grade吗? 回答是不能! 指针的类型必须与它所指向的变量类型相同 pGrade是什么类型? 二维数组名grade是什么含义? 用指针访问二维数组元素的第二种方法行指针 指向行地址的指针---行指针, int (*pGrade)[3] = grade; pGrade是行指针,是有3列的行指针 这样 pGrade+1 就是grade +1 pGrade+2 就是grade + 2 …… 函数调用可以写成 : input ( num, grade, total); 用指针访问二维数组元素的第三种方法---把二维数组看成一维数组 对于二维数组grade[M][N], 定义 int *p = *grade; 则 p就是第一列的地址(第一个元素的地址)(第一行的首地址,见前面的图,也就是第一列的地址),p指向了二维数组的第一个元素 第i行第j列的元素为 *(p+i*N+j) 或者写成下标的形式, 注意是单下标 p[i*N+j] 函数调用为:input(num, *grade, total); 指针的指针 二维数组名和行指针是一类特殊的指针,它指向的元素是行地址。 还有多级指针,最典型的就是二级指针 int a = 10; int *aPtr=a; int **aPPtr = aPtr; 其中**aPPtr就定义了一个二重指针 思考:可以用二重指针指向一个二维数组吗? 例如 int **p, a[2][3]={1,2,3,4,5,6}; p=a; 应该用行指针。或者如下定义的若干个指针构成的指针数组 思考:注意指针数组和行指针的不同 指向函数的指针 函数与数据一样,也要存储在内存中,因此也有首地址。这个首地址就是函数的第一条语句(或指令)在内存中的地址,通常称这个地址为函数的入口地址。 怎么定义指向函数的指针变量呢?它的格式与普通的指针变量略有不同,形式如下: 数据类型 (*指针变量名) (形参参数列表) 例如 int max

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档