《纺2103数组与指针课件》由会员分享,可在线阅读,更多相关《纺2103数组与指针课件(18页珍藏版)》请在金锄头文库上搜索。
1、第十章第十章广州大学计算机科学与教育软件学院广州大学计算机科学与教育软件学院8/12/20241纺2103数组与指针l l 主要内容主要内容10.10.数组与指针数组与指针 8/12/20242纺2103数组与指针10.3 数组与指针数组与指针指向数组元素的指针指向数组元素的指针特点:特点:C语言规定数组名代表数组的首地址,也就是语言规定数组名代表数组的首地址,也就是第一个元素的地址,如:第一个元素的地址,如:int a10;int *p;p=&a0;135&a0数组数组a0a1a2 首地址首地址p可写为可写为 p=a; 即把即把a 数组数组的首地址赋给指针的首地址赋给指针 p 。在定义指针变
2、量的同时在定义指针变量的同时可以赋予初值,如可以赋予初值,如int *p=&a0; 等效于等效于 int *p; p=&a0; 即即 int *p=a; 作用:将作用:将a 数组的首地址(即数组的首地址(即a0的地址)赋给的地址)赋给p。a8/12/20243纺2103数组与指针 *(p+i)a0a1 aia数组数组p, ap+1, a+1p+i, a+i 说明:说明:*(p+i)或或*(a+i)就是就是ai,即即*(p+i)与与ai等价。由于等价。由于p与与a等价,可以等价,可以认为认为pi与与ai等价,即等价,即pi 与与*(p+i)等价,等价,也就是也就是*(p+i)可以表示为可以表示为
3、pi 的形式,即的形式,即指针变量可以带下标。指针变量可以带下标。8/12/20244纺2103数组与指针一个数组元素可以表示为:一个数组元素可以表示为:1)下标法)下标法 ai或或pi2)指针法)指针法 *(a+i)或或*(p+i) 其中其中a为数组名,为数组名,p是指向数组的指针变量,且是指向数组的指针变量,且p=a。调用调用VC程序程序8/12/20245纺2103数组与指针一个数组元素可以表示为:一个数组元素可以表示为:1)下标法)下标法 ai或或pi2)指针法)指针法 *(a+i)或或*(p+i) 其中其中a为数组名,为数组名,p是指向数组的指针变量,且是指向数组的指针变量,且p=a
4、。调用调用VC程序程序例例 10.6 通过指针变量通过指针变量输出输出a数组的数组的10个元素。个元素。分析详见分析详见P233-图图10.148/12/20246纺2103数组与指针例例10 将数组中个整数按相反顺序存放。将数组中个整数按相反顺序存放。8/12/20247纺2103数组与指针用数组名作函用数组名作函数参数数参数例例 10.7 将将数组数组a中中n个个整数按相反整数按相反顺序存放。顺序存放。方法参看方法参看P237-图图10.16调用调用VC程序程序8/12/20248纺2103数组与指针对刚才的程序可以作一些改动。将对刚才的程序可以作一些改动。将函数函数inv中的形参改成指针
5、变量。中的形参改成指针变量。 图图10.17。8/12/20249纺2103数组与指针例例 10.7 指针指针方法。方法。方法见方法见P238-图图10.17。调用调用VC程序程序8/12/202410纺2103数组与指针10.3.4多维数组与指针多维数组与指针地址地址 2000元素值元素值 1 2002 3 2004 5 2006 7a,a0,*(a+0),*a,&a00a0+1a0+2a0+3,&a03a00a01a02a03地址地址 2008元素值元素值 9 2010 11 2012 13 2014 15地址地址 2016元素值元素值 17 2018 19 2020 21 2022 23
6、a+1,a1,*(a+1),&a10a1+1,*(a+1)+1a1+2,*(a+1)+2a1+3,&a13*(a+1)+3,a10a11a12a13a+2,a2,*(a+2),&a20a2+1,*(a+2)+1a2+2,*(a+2)+2a2+3,&a23*(a+2)+3a20a21a22a23因为因为*a就是就是a0是数组名是数组名,故也是地,故也是地址,不是元址,不是元素值。素值。8/12/202411纺2103数组与指针说明:对于二维数组说明:对于二维数组1)a0,a1,a2代表各行的首地址,而不是元素代表各行的首地址,而不是元素值;值;2)*(a+1)+2不要写成不要写成*(a+1+2)
7、因为后者为因为后者为*(a+3);3)*(a+i)和和ai等价,表示各行首地址,而不是等价,表示各行首地址,而不是元素值;元素值;如:如:*(a+i)+j, ai+j 就是地址就是地址&aij 的值。的值。8/12/202412纺2103数组与指针例例10.10调调用用VC程程序序注意:注意:a0与与*(a+0)、&a10与与*(a+1)+0是等价的。是等价的。8/12/202413纺2103数组与指针 指向多维数组元素的指针变量指向多维数组元素的指针变量指针数组的声明指针数组的声明 int (*p)4;表示表示p为指向每行有为指向每行有4个元素的数组的指针。个元素的数组的指针。8/12/20
8、2414纺2103数组与指针指向数组的指针变量指向数组的指针变量1357911131517192123pp+1p+2*(p+i)表示第表示第i行首行首地址,地址,*(p+i)+j表示表示第第i行第行第j个地址;个地址;*(*(p+i)+j)表示第表示第i行第行第j个元素值。个元素值。b00b03b13b228/12/202415纺2103数组与指针1357911131517192123p, ap+1p+2jj+1j+2j+3int (*p)4;p=a;a01a03 p为指向每行有为指向每行有4个元素的数组的指针。个元素的数组的指针。例例10.12 输出二维数组任一行任一列元素的值。输出二维数组任一行任一列元素的值。8/12/202416纺2103数组与指针例例10.12 输出二维数组任一行任一列元素的值。输出二维数组任一行任一列元素的值。调用调用VC程序程序8/12/202417纺2103数组与指针作业:作业:P278-习题习题 10.3, 10.4熟悉及上机通过本次课例程序。熟悉及上机通过本次课例程序。8/12/202418纺2103数组与指针