资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,Neusoft Institute of Information,Date:,*,IT Education&Training,IT Education&Training,Neusoft Institute of Information,Date:,07 十月 2024,第六章 指针,-,指针与数组,办公室:,C7,座,201,EMAIL,:,课件下载网址:,ftp:/,任课教师:,黄伟,授课要点,指向数组元素的指针变量,指针的运算,用指针表示数组元素,引入:数组和指针的关系,数组名,是表示数组,首地,址的,地址常量,指针变量,是存放变量,地址的变量,指向数组元素的指针变量,例,int array10;,int *p;,p=/,p=array;,或,int *p=,或,int *p=array;,array0,array1,array2,array3,array9,.,整型指针,p,&array0,p,授课要点,指向数组元素的指针变量,指针的运算,用指针表示数组元素,指针的运算,指针变量的赋值运算,p=(,将变量,a,地址,p),p=array;(,将数组,array,首地址,p),p=(,将数组元素地址,p),p1=p2;(,指针变量,p2,值,p1),不能把一个整数,p,也不能把,p,的值整型变量,如,int i,*p;,p=1000;(,),i=p;(,),指针的算术运算,指针的算术运算:,p,i,(i,为整型数,),p+,p-,p+i,p-i,p+=i,p-=i,等,若,p1,与,p2,指向同一数组,,p1-p2=,两指针间元素个数,(p1-p2)/d,p1+p2,无意义,指针的算术运算,例,p,指向,s,hort int,型数组,且,p=,则,p+1,指向,a1,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a,数组,p,p+1,a+1,p+i,a+i,p+9,a+9,例,int a10;,int *p=,p+;,*,p=1;,等价于,a3=1;,例,int a10;,int*p1=,int*p2=,则:,p2-p1=3;,有定义,:float a10,*p=NULL;,则,:,p=a;p,、,p+,表示什么?,p=p,、,p-3,、,p+3,、,p-,表示什么?,模仿练习,授课要点,指向数组元素的指针变量,指针的运算,用指针表示数组元素,数组元素表示方法,a0,a1,a2,a3,a9,.,a,a+9,a+1,a+2,地址,元素,下标法,a0,a1,a2,a,9,a0,a1,a2,a3,a9,.,p,p+9,p+1,p,+,2,地址,元素,指针法,*p,*(p+1),*(p+2),*(p+9),变址运算符,a,i,*(a+i),ai,pi *(p+i)*(a+i),有,:int a10,*p=a;,有定义,:float a10,*p=NULL;,则,:,p=*p,、*,(p+1),、*,(p+3),表示什么?,p=a;*p+1,、*,(p+5)-1,表示什么?,模仿练习,用指针表示数组元素举例,1,例:定义一一维数组,从键盘输入元素值,并输出。要求用指针表示数组元素,void main(),int i,*p,a7;,p=a;,for(i=0;i7;i+),scanf(%d,p+,);,printf(n);,p=a;,for(i=0;i7;i+,p+),printf(%d,*p,);,指针变量可以指到,数组后,的内存单元,用指针表示数组元素举例,2,例:输入,10,个整数,找出最大值并输出。要求用指针表示数组元素,void main(),int a10,*p=a,*pmax=a,i;,for(i=0;i10;i+),printf(,请输入第,%d,个数:,i+1);,scanf(%d,p+,);,p=a+1;,for(i=1;i10;i+,p+,),if(,*pmax=str;p-),printf(%c,*p);,模仿练习答案,2.,#include,#include,int max(int*q,int n);,void main(),int a5,*p=a;,int i;,for(i=0;i5;i+,p+),scanf(%d,p);,printf(max=%d,max(a,5);,int max(int*q,int n),int i;,int maxNo=*q;,q=q+1;,for(i=1;imaxNo),maxNo=*q;,return maxNo;,小组讨论并总结,1,、数组元素的表示方法有哪几种,并举例说明?,2,、数组名和指向数组的指针有何区别?,结论,1,数组元素表示方法,有四种表示方法,如下:,int a10,*p=a;,ai,pi *(p+i)*(a+i),,它们都表示数组的第,i+1,个元素,结论,2,数组名和指向数组的指针有何区别,数组名是,地址常量,,它的值不能改变,指向数组的指针,是,指针变量,,它的值可以改变,作业,每人必做,将“学生成绩管理系统”中的“学生”变量定义成数组,学生信息的输入、输出代码做出相应的修改。,Neusoft Institute of Information,办公室:,C7,座,201,EMAIL,:,课件下载网址:,ftp:/,
展开阅读全文