8-4(指针与二维 数组 指针数组)ppt课件.ppt
指向二维数组的指针变量指向二维数组的指针变量21指针与二维数组的关系指针与二维数组的关系指针数组指针数组3(1)数组名数组名array表示数组的首地址表示数组的首地址, 即即array0的地址的地址;(2)数组名数组名array是地址常量是地址常量(3)array+i是元素是元素arrayi的地址的地址(4)arrayi *(array+i)arrayint array10;对于二维数组:对于二维数组:(1)a(1)a是是数组名,数组名, 包含三个元素包含三个元素 a0,a1,a2a0,a1,a2(2)(2)每个元素每个元素aiai 又是一个一维又是一个一维 数组,包含数组,包含4 4个个 元素元素aa+1a+2int a3 ; a0a1a2200020082016200020022008201020162018a00a01a10a11a20a21a02a03a12a13a22a23a0+ia1+ia2+i*(a+0)+i*(a+1)+i*(a+2)+i4地址地址a0+0a0+1a0+2a0+2a1+0a1+1a1+2a1+2a2+0a2+1a2+2a2+2对应值对应值*(a0+0)*(a0+1)*(a0+2)*(a0+2)*(a1+0)*(a1+1)*(a1+2)*(a1+2)*(a2+0)*(a2+1)*(a2+2)*(a2+2) 对二维数组对二维数组 int a34,int a34,有有 a-二维数组的首地址,即第0行的首地址 a+i-第i行的首地址 ai *(a+i)-第i行第0列的元素地址 ai+j *(a+i)+j -第i行第j列的元素地址 *(ai+j) *(*(a+i)+j) aija+i=&ai=ai=*(a+i) =&ai0, 值相等,含义不同a+i &ai, 表示第i行首地址,指向行ai *(a+i) &ai0, 表示第i行第0列元素地址,指向列int a34;a0a1a2200020082016200020022008201020162018a00a01a10a11a20a21a02a03a12a13a22a23aa+1a+2int a34;a00a01a10a11a20a21a02a03a12a13a22a23二维数组元素表示形式:二维数组元素表示形式:(1)a12(2)*(a1+2)(3)*(*(a+1)+2)(4)*(&a00+1*4+2)地址表示:地址表示:(1) a+1 (2) &a10(3) a1(4) *(a+1)行指针行指针 列指针列指针地址表示:地址表示:(1) &a12(2) a1+2(3) *(a+1)+2(4)&a00+1*4+2定义形式:定义形式:数据类型 (*指针名)一维数组维数;例例: int (*p)4;( )( )不能少不能少int (int (* *p)4p)4与与int int * *p4p4不同不同p p的值是一维数组的的值是一维数组的首地址,首地址,p p是是行指针行指针u可让可让p p指向二维数组某一行指向二维数组某一行 如如 int a3int a34 4,(,(* *p)p)4 4=a;=a;int a34;a00a01a10a11a20a21a02a03a12a13a22a23aa+1a+2pp+1p+2p0+1或 *p+1p1+2或 *(p+1)+2*(*p+1)或 (*p)1 *(*(p+1)+2)一维数组指针变量维数和二维数组列数必须相同例:例:一维数组指针变量举例一维数组指针变量举例main() static int a34=1,3,5,7,9,11,13,15,17,19,21,23; int i,j,(*p)4; for(p=a,i=0;i3;i+,p+) for(j=0;j4;j+) printf(%d ,*(*p+j); printf(n);p=a0; p=*a; p=&a00; p=&a0; int a34;a00a01a10a11a20a21a02a03a12a13a22a23ppp p0j作用作用:用于处理多个字符串定义定义:数组中的元素为指针变量定义形式定义形式:存储类型 数据类型 *数组名数组长度说明; 例:例:int *p4;指针所指向变量的数据类型指针所指向变量的数据类型指针本身的存储类型指针本身的存储类型区分区分int int * *p4p4与与int(int(* *p)4p)4v指针数组赋值与初始化指针数组赋值与初始化L i s p 0F o r t r a n 0B a s i c 0p0p1p2p30赋值赋值: :main() char a=Fortran; char b=Lisp; char c=Basic; char *p4; p0=a; p1=b; p2=c; p3=NULL; .或或: :main() char *p4; p0= Fortran; p1= Lisp; p2= Basic; p3=NULL; .初始化初始化: :main() char *p=Fortran, Lisp, Basic,NULL; .L i s p 0F o r t r a n 0B a s i c 0p0p1p2p30指针变量与二维数组之间的关系指向一维数组的指针变量的使用方法指针数组的定义和初始化