成都理工大学-C++程序设计-第5章指针(2).ppt
****指针与一维数组指针引用一维数组元素二维数组的地址结构指针指向二维数组指针引用二维数组元素*1.指针与一维数组C规定,数组名是数组首地址,是一个常量指针。*数组是同类型的变量的集合,各元素按下标的特定顺序占据一段连续的内存,各元素的地址连续,使用指针对数组元素的操作十分方便。intb[5];int*Pb;Pb=b;Pb=b[0];指针可以进行的操作有:Pb++、Pb--、Pb=b+i、Pb=Pb-i、Pb=b[i]+n等。不能进行的操作是:b++、b--、b=b+i等。?指针与一维数组Pb的指向不得超出数组元素的范围****指针与一维数组指针引用一维数组元素二维数组的地址结构指针指向二维数组指针引用二维数组元素**指针操作数组步骤:int*p,a[10];p=a;/*指向数组的首地址*/或p=a[0];/*指向数组的首地址*/当指针指向数组的首地址时,则a[i]的元素地址为:p+i或a+i引用数组元素可以有三种方法:下标法:a[i]指针法:*(p+i)或*p++数组名法:*(a+i)2.指针引用一维数组元素指针与一维数组**指针操作数组步骤:int*p,a[10];p=a;/*指向数组的首地址*/或p=a[0];/*指向数组的首地址*/当指针指向数组的首地址时,则a[i]的元素地址为:p+i或a+i引用数组元素可以有三种方法:下标法:a[i]指针法:*(p+i)或*p++数组名法:*(a+i)2.指针引用一维数组元素指针与一维数组**#includestdio.hintmain(void){inta[10],i;int*p=a;for(i=0;i10;i++)scanf(%d,p++);PaPp--; 【例】从键盘输入10个数,将其倒序输出。指针与一维数组for(;p-a=0;p--)printf(%3d,*p);printf(\n);return(0); }关注指针适时指向**#includestdio.hintmain(void){inta[]={1,2,3,4,5,6,7,8,9,10}; 输出元素地址及两元素间的距离-相隔元素个数int*p1=a,*p2=a+9;可以改写为:int*p1=a[0],*p2=a[9];指针与一维数组printf(“p1=%d\np2=%d\np2-p1=%d\n,p1,p2,p2-p1);return(0); }**指针与一维数组引用数组元素方法下标法inti,a[3]={1,2,3};for(i=0;i3;i++)printf(%2d,a[i]);地址法inti,a[3]={1,2,3};for(i=0;i3;i++)printf(%2d,*(a+i));指针法inta[3]={1,2,3},*p;for(p=a;p(a+3);p++)printf(%2d,*p);**指针与一维数组#includestdio.hintmain(void){inti,a[10],*p;p=a;for(i=0;i10;i++)scanf(%d,p++);p=a;for(i=0;i10;i++)if(*(p+i)%2)printf(“%4d”,*(p+i));printf(\n);return(0);}输出数组中的奇数。【例】****指针与一维数组指针引用一维数组元素二维数组的地址结构指针指向二维数组指针引用二维数组元素*3.二维数组的地址结构*如:inta[3][4]={{1,2,3,4},{5,