- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章指针与数组概要
指针与数组的关系 指针数组与命令行参数 用指针构成动态数组 指针变量的算术运算 对于指向数组的指针变量而言,当对指针变量进行加减一个整型常量以及自增/自减运算时,实质上就是将指针变量的指向沿着数组所占据的存储区域向前和向后移动多个或者是一个数组元素的位置。 指针变量的算术运算 对于两个同类型指针变量相减的操作,也只有在这两个指针变量指向同一连续的存储区域时才有实际意义。 两个指针变量差值的绝对值表示了两个指针之间存在着多少个它们所能够指向的数据对象,当然也可以由此计算出两个指针之间距离的字节数。 int a[10]={1,2,3,4,5,6,7,8,9,10},*p1=a,*p2=a+5; 用指针数组组织若干同类型的数组 例:int a[4],b[5], *p[2]; p[0]=a; p[1]=b; 用指针数组组织若干同类型的变量 例: double x,y,*p1[2]; p1[0]=x; p1[1]=y; p a b p1 x y 例6-8 用一维指针数组处理二维数组示例。 6.2.1 指针数组 例6-8 用一维指针数组处理二维数组示例。 ……………. #define ROW 3 #define COL 5 void main() {void MakeArray(int *v,int m,int n); int a[ROW][COL],i,*p[3]; MakeArray(a[0],ROW,COL); for(i=0;iROW;i++)//指针数组p的各元素依次指向二维数组a的每一行起始地址 p[i]=a[i]; //相当于初始化p,a[i]是行指针 for(i=0;iCOL;i++) printf(%5d,*(p[1]+i));//指针p[1]指向二维数组第2行a[1] printf(\n); } void MakeArray(int *v,int m,int n) { int i,j; srand(time(NULL)); for(i=0;im;i++) for(j=0;jn;j++) *(v+i*n+j)=rand()%1000;} for(i=0;im;i++) { for(j=0;jn;j++) { *(v+i*n+j)=rand()%1000; printf(%4d,*(v+i*n+j)); } printf(\n); } 如果要把这个数组打印出来,再打印第二行呢? 指针数组 例6-9 编制程序解决下述问题:5个学生,每人所学课程门数不同(成绩存放在一维数组中,以-1表示结束),编写程序输出他们的各项成绩。 78 98 3 -1 100 98 -1 88 -1 99 88 -1 100 78 33 65 -1 p grad stu1 stu2 stu3 stu4 stu5 6.2.1 指针数组 * 第6章 指针与数组 6.1.1多级指针 1) 多级指针的概念 在程序设计语言中,占用连续空间的数据对象都与其所占存储区域的起始地址相关。 占用连续空间的数据对象有的表示的是线性的概念、有的表示的是平面的概念或是多维空间的概念。在计算机存储系统中对应的都是线性的连续空间区域,现在的问题是如何用表明存储系统中线性连续区域的起始地址表示的到底是几维空间的起始地址。 使用地址的不同级别来描述这些表示不同空间数据对象在存储上的首地址,其中用一级地址描述线性空间在存储上的首地址;用二级地址描述平面空间在存储上的首地址;地址就是指针,所以一级地址、二级地址、多级地址又分别称为一级指针、二级指针和多级指针。 第6章 指针与数组 2)多级指针变量的定义 二级指针变量的定义形式如下: [存储类别符] 数据类型符 **指针变量名; 三级指针变量的定义形式如下: [存储类别符] 数据类型符 ***指针变量名; 更高级别的指针变量的定义形式按照上述形式类推,只需增加更多的星号即可。 int x=100,*y,**z; y=x; z=y; 6.1.1 多级指针 100 10000 10300 x y z 多级指针的指向关系 变量x的值为100 变量x的存储首址为10000 变量y的存储首址为10300 6.1 指针与数组的关系 100 10000 10300y 10000 x 10500 z 10300 …… …… int x=100,*y,**z;
文档评论(0)