资源描述:
《第27次(指针与数组)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ITEducation&TrainingNeusoftInstituteofInformationDate:07十月2021第六章指针---指针与数组办公室:C7座201EMAIL:huang.w@ccniit.com课件下载网址:ftp://computer.dept.ccniit.com任课教师:黄伟授课要点指向数组元素的指针变量指针的运算用指针表示数组元素引入:数组和指针的关系数组名是表示数组首地址的地址常量指针变量是存放变量地址的变量指向数组元素的指针变量例intarray[10];int*p;p=&arra
2、y[0];//p=array;或int*p=&array[0];或int*p=array;array[0]array[1]array[2]array[3]array[9]...整型指针p&array[0]p授课要点指向数组元素的指针变量指针的运算用指针表示数组元素指针的运算指针变量的赋值运算p=&a;(将变量a地址p)p=array;(将数组array首地址p)p=&array[i];(将数组元素地址p)p1=p2;(指针变量p2值p1)不能把一个整数p,也不能把p的值整型变量如inti,*p;p=10
3、00;()i=p;()指针的算术运算指针的算术运算:pi(i为整型数)p++,p--,p+i,p-i,p+=i,p-=i等若p1与p2指向同一数组,p1-p2=两指针间元素个数(p1-p2)/dp1+p2无意义指针的算术运算例p指向shortint型数组,且p=&a[0];则p+1指向a[1]a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a数组pp+1,a+1p+i,a+ip+9,a+9例inta[10];int*p=&a[2];p++;*p=1;等价于a[3]=1;例int
4、a[10];int*p1=&a[2];int*p2=&a[5];则:p2-p1=3;有定义:floata[10],*p=NULL;则:p=a;p、p++表示什么?p=&a[3];p、p-3、p+3、p--表示什么?模仿练习授课要点指向数组元素的指针变量指针的运算用指针表示数组元素数组元素表示方法a[0]a[1]a[2]a[3]a[9]...aa+9a+1a+2地址元素下标法a[0]a[1]a[2]a[9]a[0]a[1]a[2]a[3]a[9]...pp+9p+1p+2地址元素指针法*p*(p+1)*(p+2)*(p
5、+9)[]变址运算符a[i]*(a+i)a[i]p[i]*(p+i)*(a+i)有:inta[10],*p=a;有定义:floata[10],*p=NULL;则:p=&a[5];*p、*(p+1)、*(p+3)表示什么?p=a;*p+1、*(p+5)-1表示什么?模仿练习用指针表示数组元素举例1例:定义一一维数组,从键盘输入元素值,并输出。要求用指针表示数组元素voidmain(){inti,*p,a[7];p=a;for(i=0;i<7;i++)scanf("%d",p++);printf("");p=
6、a;for(i=0;i<7;i++,p++)printf("%d",*p);}指针变量可以指到数组后的内存单元用指针表示数组元素举例2例:输入10个整数,找出最大值并输出。要求用指针表示数组元素voidmain(){inta[10],*p=a,*pmax=a,i;for(i=0;i<10;i++){printf("请输入第%d个数:",i+1);scanf("%d",p++);}p=a+1;for(i=1;i<10;i++,p++)if(*pmax<*p)pmax=p;printf("max=%d",*pmax)
7、;}学生模仿练习以下习题用指针方法完成:1、从键盘输入一字符串,然后反序输出。2、输入8个整数,找出其中最小值和最大值并输出。模仿练习答案1.#include#includevoidmain(){charstr[10];char*p=NULL;gets(str);for(p=str+strlen(str)-1;p>=str;p--)printf("%c",*p);}模仿练习答案2.#include#includeintmax(int*q,in
8、tn);voidmain(){inta[5],*p=a;inti;for(i=0;i<5;i++,p++)scanf("%d",p);printf("max=%d",max(a,5));}intmax(int*q,intn){inti;intmaxNo=*q;q=q+1;for(i=1;imaxNo)maxNo