指向二维数组的指针

上传人:ni****g 文档编号:486068550 上传时间:2023-12-17 格式:DOCX 页数:2 大小:67.78KB
返回 下载 相关 举报
指向二维数组的指针_第1页
第1页 / 共2页
指向二维数组的指针_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《指向二维数组的指针》由会员分享,可在线阅读,更多相关《指向二维数组的指针(2页珍藏版)》请在金锄头文库上搜索。

1、指向二维数组的指针一.二维数组元素的地址为了说明问题,我们定义以下二维数组:int a34=0,1,2,3, 4,5,6,7, 8,9,10,11;a为二维数组名,此数组有3行4歹U,共12个元素。但也可这样来理解,数组a由三个元素组成:a0, a1, a2。而它中每个元素又是一个一维数组,且都含有4个元素(相当于4列),例如,a0所代表的一维数组所包含的4个元素为a00, a01, a02, a03。如图5.所示: a- I a0 | - | 0 | 1 | 2 | 3 |I a1 | -| 4 | 5 | 6 | 7 |I a2 | - | 8 | 9 | 10 | 11 |图5.但从二维

2、数组的角度来看,a代表二维数组的首地址,当然也可看成是二维数组第 0行的首地址。a+1就代表第1行的首地址,a+2就 代表第2行的首地址。如果此二维数组的首地址为1000,由于第0行有4个整型元素,所以a+1为1008, a+2 也就为1016。如图6.所示a34a 1111(1000) |0| 1| 2| 3|a+1III_II(1008) -|4| 5| 6| 7|a+2|(1016) -| 8 | 9 | 10 | 11 | 11111图6.既然我们把a0, a1, a2看成是一维数组名,可以认为它们分别代表它们所对应的数组的首地址,也就是讲,a0代表第0行中第0列元素的地址,即&a00

3、, a1是第1行中第0列元素的地址,即&a10,根据地址运算规则,a0+1即代表第0行第1列元素的地址,即 &a01, 一般而言,ai+j即代表第i行第j列元素的地址,即&aij。另外,在二维数组中,我们还可用指针的形式来表示各元素的地址。如前所述,a0与*(a+0)等价,a1与*(a+1)等价,因此ai+j就与*(a+i)+j等价,它表示数组元素aij的地址。因此,二维数组元素aij可表示成*(ai+j)或*(*(a+i)+j),它们都与aij等价,或者还可写成(*(a+i)j 另外,要补充说明一下,如果你编写一个程序输出打印a和*a,你可发现它们的值是相同的,这是为彳f么呢?我们可这来理解

4、:首先,为了说明问题,我们把二维数组人为地看成由三个数组元素a0, a1, a2组成,将a0, a1, a2看成是数组名它们又分别是由4个元素组成的一维数组。因此,a表示数组第 0行的地址,而*a即为a0,它是数组名,当然还是地址,它就是数组第0行第0 列元素的地址。二.指向一个由n个元素所组成的数组指针在Turbo C中,可定义如下的指针变量:int (*P)3;指针p为指向一个由3个元素所组成的整型数组指针 。在定义中,圆括号是不能少的,否则它是指针数组,这将在后面介绍。这种数组 的指针不同于前面介绍的整型指针 ,当整型指针指向一个整型数组的元素时,进行指针(地址)力口 1运算,表示指向数

5、组的下一个元素,此时地址值增加了 2(因为放大因子为2),而如上所定义的指向一个由 3个元素组成的数组指针,进行地址加1运算时,其地址值增加了 6(放大因子为2x3=6),这种数组指针在 Turbo C中用得较少,但在处理二维数组时,还是很方便的。例如int a34, (*p)4;p=a;开始时p指向二维数组第0行,当进行p+1运算时,根据地址运算规则,此时放大因子为4x2=8,所以此时正好指向二维数组的第1行。和二维数组元素地址计算的规则一样,*p+1指向a01, *(p+i)+j则指向数组元素aij。例1int a3 4= 1,3,5,7, 9,11,13,15, 17,19,21,23; main。int i,(*b)4;b=a+1;/* b指向二维数组的第1彳T,此时*b0或*b 是 a10 */for(i=1;i=4;b=b0+2,i+)/*修改 b 的指向,每次增加 2 */printf(%dt,*b0);printf(n);for (i=0; i2; i+) b=a+i;/*修改b的指向,每次跳过二维数组的一彳T */printf(%dt,*(bi+1); printf (n); 程序运行2果如下:913172131119

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

当前位置:首页 > 商业/管理/HR > 营销创新

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