资源描述:
《大学C语言课程全部PPT汇总-第七章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章指针本章节介绍指针的定义和指针的使用使用指针的目的如何定义和初始化指针使用指针访问内存变量本章内容目的与要求掌握指针的定义格式正确使用指针第7章指针使用指针的目的直接访问内存变量;使程序更加简洁、方便、高效;使用指针可以使问题更好的解决;指针的概念和定义31指针和简单变量32指针和一维数组33字符型指针和字符型一维数组34指针和二维数组35第7章指针二级指针36(不做要求)(不做要求)(不做要求)指针的概念和定义31指针和简单变量32指针和一维数组33字符型指针和字符型一维数组34指针和二维数组35第7章指针二级指针(不讲)36直接访问指针的概念
2、和定义字节是存储容量的基本单位,每个字节在内存中有唯一的编号,叫做地址;1.inta;(开辟2个字节存储单元,16bit)2.scanf(“%d,&a);(从键盘输入30000)30000ASCII为:0111010100110000第一字节8bit内存字节地址:2000第二字节8bit内存字节地址:200101110101001100003.printf(“%d”,a);把内存地址名字叫做a的地址(即2000和2001)输出;指针的概念和定义直接访问字节是存储容量的基本单位,每个字节在内存中有唯一的编号,叫做地址;系统自动把变量名与其地址建立一一对应
3、的映射关系,数据的输入输出是直接对内存变量的地址进行操作的;上述通过变量名访问内存地址的方式叫做直接访问方式;指针的概念和定义间接访问变量名a与地址一一对应。若将具体地址(2000、2001)存放到另一变量p中,通过p访问变量a的值30000,叫做间接访问;inta=30000;指针的概念和定义第一字节8bit内存字节地址:2000第二字节8bit内存字节地址:20010111010100110000inta=30000;*p;3.p=&a;p存放变量a的地址2000-20014.printf(“%d”,a);输出变量a的值;5.printf(“%d”
4、,p);输出p地址起始值;6.printf(“%d”,*p);输出p地址内的具体数值;指针指针的概念和定义1.指针的概念指针:存放变量地址的变量(*p)指针只能存放地址;p=&a;p=&b;指针变量类型永远是整型;指针的本质就是地址指针的概念和定义2.指针的定义格式:数据类型*指针名称int*p;float*p;数据类型:指针指向何种数据的类型,并非定义指针本身是什么类型。inta;int*p=&a;floata;float*p=&a;指针的概念和定义2.指针的定义格式:数据类型*指针名称int*p;float*p;*:说明符,说明其后是指针变量指针的
5、概念和定义intp;int*p;指针的概念和定义31指针和简单变量32指针和一维数组33字符型指针和字符型一维数组34指针和二维数组35第7章指针二级指针(不讲)361.指针的初始化和赋值int*p;p=&a;指针和简单变量int*p=&a;(指针初始化)定义指针要用*,指针赋值不要用*inta,b,*p1=&b,*p2;p2=&a;p1=&a;2.空指针和void型指针inta=3,*p;printf(“%d”,*p);printf(“%d”,*p);结果:-11536指针定义后未赋予其值,错误不可预料指针和简单变量2.空指针和void型指针
6、不需用的指针不要定义定义指针后尽快赋予其值定义指针而不赋予其值,为不产生不可预料的错误,应设为空指针。int*p;p=0;int*p=0;int*p= ;int*p=NULL;(宏定义)指针和简单变量2.空指针和void型指针int*p;float*p;char*p;void*p;void型指针指针指向的数据类型不确定;void型指针访问数据,错误不确定;(float*)p;指针和简单变量3.用指针访问变量的值(指针的使用)指针使用格式:*指针名称功能:取变量地址所存放的数值int*p;inta,b,c=3;p=&c;a=p;b=*p;printf(
7、“%d,%d,%d,%d”,a,b,p,*p);指针和简单变量例7.1main{int*p;intm,n;m=200;p=&m;n=*p;printf(“%d,%d,%d”,m,n,*p)}200,200,200例7.2main{charc1=‘A’,c2=‘B’;char*cp1=&c1,*cp2=&c2;floatx1=0.5,x2=8.5,y;float*fp1=&x1,*fp2=&x2;printf(“%c%c%c%c”,c1,*cp1,c2,*cp2);y=*fp1+*fp2;printf(“y=%f+%f=%f”,*fp1,*f
8、p2,y);}注意:&与*是互为逆运算inta;(假如变量a开辟的内存地址为3000-3001