资源描述:
《C/C++程序设计教程教学课件 C语言程序设计7.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章指针7.1变量和地址7.2指针变量7.3指针与数组7.4指针与函数7.5指针与结构退出指针的作用:可以使程序简洁、紧凑、高效;有效地表示复杂的数据结构;动态分配内存;得到多于一个的函数返回值。8/3/20212《C与C++程序设计教程》-第七章地址:一个变量名代表内存中的一个存储单元,每个存储单元都有一个编号,这就是“地址”。7.1变量和地址房间—变量名房客—变量值房间号—地址inti,j;charch;floatf;i=5;j=3;ch=’H’;f=3.14;53‘H’3.14ijchf……………………2000200220042005
2、200920012003200620072008编译或函数调用时为变量分配内存单元内存中每个字节有一个编号——地址变量是对程序中数据存储空间的抽象返回8/3/20213《C与C++程序设计教程》-第七章7.2指针变量7.2.1指针变量的概念7.2.2指针变量的定义形式7.2.3指针变量的运算7.2.4指针变量的初始化返回8/3/20214《C与C++程序设计教程》-第七章…...…...2000200420062005整型变量i10变量pi200120022003指针:一个变量的地址。指针变量:专门存放另一变量地址的变量。2000指针指针变量
3、变量的内容变量的地址指针变量变量变量地址(指针)变量值指向地址存入指针变量inti,*pi;i=10;pi=&i;7.2.1指针变量的概念返回8/3/20215《C与C++程序设计教程》-第七章[存储类型]数据类型*指针变量名;inti,j,*pi,*pj;floatf;float*pf;7.2.2指针变量的定义形式合法标识符指针变量本身的存储类型表示定义指针变量不是‘*’运算符注:(1)int*p1,*p2;指针变量名是p1,p2,不是*p1,*p2。(2)指针变量只能指向定义时所规定类型的变量。(3)指针变量定义后,变量值不确定,应用前必
4、须先赋值。指针的目标变量的数据类型返回8/3/20216《C与C++程序设计教程》-第七章7.2.3指针变量的运算&:取变量的地址。单目运算符、优先级为2、右结合性。*:取指针变量所指地址中的内容,与&为互逆运算。单目运算符、优先级为2、右结合性。例:i=5;pi=&i;例:j=*pi;相当于j=i;4000指针变量pi整型变量i5*pi&ipi=&i=&(*pi)i=*pi=*(&i)8/3/20217《C与C++程序设计教程》-第七章[例7.1]指针的运用。main(){inti,j;int*pi,*pj;i=2;j=4;pi=&i;pj
5、=&j;printf("%d,%d",*pi,*pj);printf("%u,%u",pi,pj);i=*pj+1;*pj=*pj+2;printf("%d,%d",i,j);printf("%d,%d",*pi,*pj);}2,465500,655025,65,68/3/20218《C与C++程序设计教程》-第七章运行输出:x=6,y=9MAX=9,MIN=6…...…...指针变量px指针变量p20002008200220042006指针变量py整型变量y整型变量x6200692008200620082006[例7.2]输
6、入x、y两个整数,按先大后小的顺序输出x、y。main(){intx,y,*px,*py,*p;scanf("%d%d",&x,&y);px=&x;py=&y;if(x7、array[i];//将数组元素地址pp1=p2;//指针变量p2值p1pj=0;//空指针,相当于pj=NULL;pz=4000;//地址值4000pz8/3/202110《C与C++程序设计教程》-第七章指针的算术运算:例p指向float数,则p+1p+14例p指向int型数组,且p=&a[0];则p+1指向a[1]例inta[10];int*p=&a[2];p++;*p=1;例inta[10];int*p1=&a[2];int*p2=&a[5];则:p2-p1=3;a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7
8、]a[8]a[9]a数组pp+1,a+1p+i,a+ip+9,a+91若p=&i;有pn&isizeof(i)np++,p--,p+n,p-n,p+=n,p