欢迎来到天天文库
浏览记录
ID:52087591
大小:216.00 KB
页数:34页
时间:2020-03-31
《《数据类型指针》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章数据类型___指针第3章数据类型___指针1、指针的概念2、指针运算3、指针的限定——const指针4、指针与数组(补充)5、堆内存分配(补充)6、void指针(补充)7、指针数组(补充)指针是一种特殊的数据类型。指针概念是C++语言中较难理解和较难掌握的概念之一。本章节介绍指针的概念、定义、运算等内容。指针变量是一种特殊的变量,变量中存放的不是某种数据类型的数据,而是另一个变量或常量的地址。§1、指针概念如有定义:intvalue=150;charch=‘M’;并执行赋值语句:pv=&value;pc=&ch;//pvholdstheaddressofvalue由于pv中存放的是
2、value变量的地址,pc中存放的是ch变量的地址,故称pv和pc为指针变量。简称为指针(Pointer)。指针指向的对象称为目标或目标变量(常量)。如图3.1所示:…150…‘M’……valuechpvpc*pv*pc图3.1内存空间1000H1050H0000H&value1000H1001H&ch1050H&pc11A2H11A3H11A1H&pv11A0HC++规定:目标或目标变量可以用指针变量名前加上运算符“*”表示。pv的目标变量value可表示为*pv,pc的目标变量ch可表示为*pc,即*pv和value等效*pc和ch等效而&pv和&pc表示针变量本身的地址(1)、指针
3、的定义指针变量也必须先定义后使用。定义的一般格式:类型定义符*指针变量名;其中:类型定义符——指针指向对象的数据类型“*”——说明符,表示其后的标识符是指针变量,而不是一般变量。例如:int*ptr;char*name;float*pf;其中,定义ptr,name,pf分别为指向整型、字符型和浮点型数据的指针。constint*ptr;//pointertointconstconstchar*cpcconstfloat*point其中,ptr,cpc,point为指向常量的指针。注意:指针变量可以与其他变量一起定义,如:inta,bb,*c;char*p,*q,ch;指针变量也可定义为全
4、局,静态和局部的指针。例如:intnum,*pn;charcolor,*pc;执行语句pn=#pc=&color;则在程序中*pn=100;等效于num=100;*pc=‘r’;等效于color=‘r’;这里,“*”作为访问目标变量的运算符,在定义指针时,“*”作为说明符。注意使用上的区别。(2)、指针赋值使用指针前,必须给已定义指针变量赋以指向目标变量的地址值。“&”操作符可获取变量的地址。指针赋值的几种情况:同种数据类型的指针变量之间可以相互赋值。inta,*pa,*pb;pa=&a;pb=pa;//pa,pbholdsthesameaddressofa指针变量可以赋初值:i
5、nta,b,c;int*pa=&a,*pc=&c;指针可初始化为空指针char*p=NULL;指针变量的类型名与指向目标的数据类型一致。例如:int*p,a;floatb,*q;p=&b;q=&a;//错误p=&a;q=&b;//正确例:有关指针概念的程序#includeusingnamespacestd;voidmain(){inticount=18;int*ptr=&icount;*ptr=58;cout<6、ndl;}结果:58580x0067fe000x0067fdfc0x0067fe00(3)、指针变量的地址指针也是变量,指针变量的地址是指它本身的内存地址,如图3.1所示。…150…‘M’…1000H1050H…valuechpvpc*pv*pc0000H&value1000H1001H&ch1050H11A1H&pv11A0H&pc11A2H11A3H图示如下:0067:FE00(&icount)58ptricount0067:FE00*ptr0067:FDFC(&ptr)图3.2(&icount)§2、指针运算指针运算实质上是地址运算。(1)、赋值运算(2)、取地址运算“&”(add7、ressof)和取内容运算“*”(Dereference),“&”和“*”互为逆运算例如:intx,*ptr=&x;则&(*ptr)表示指针ptr*(&x)表示变量x(3)、指针与整数的加减运算在数组中,指针变量加上或减去一个整数n,表示:指针由当前所指向的位置向前或向后移动n个数据元素的位置。移动后的实际地址为:p±n*sizeof(数据类型)(4)、指针的关系运算指向同种数据类型的指针可作关系运算,表示它们所存放的地址之间的关系
6、ndl;}结果:58580x0067fe000x0067fdfc0x0067fe00(3)、指针变量的地址指针也是变量,指针变量的地址是指它本身的内存地址,如图3.1所示。…150…‘M’…1000H1050H…valuechpvpc*pv*pc0000H&value1000H1001H&ch1050H11A1H&pv11A0H&pc11A2H11A3H图示如下:0067:FE00(&icount)58ptricount0067:FE00*ptr0067:FDFC(&ptr)图3.2(&icount)§2、指针运算指针运算实质上是地址运算。(1)、赋值运算(2)、取地址运算“&”(add
7、ressof)和取内容运算“*”(Dereference),“&”和“*”互为逆运算例如:intx,*ptr=&x;则&(*ptr)表示指针ptr*(&x)表示变量x(3)、指针与整数的加减运算在数组中,指针变量加上或减去一个整数n,表示:指针由当前所指向的位置向前或向后移动n个数据元素的位置。移动后的实际地址为:p±n*sizeof(数据类型)(4)、指针的关系运算指向同种数据类型的指针可作关系运算,表示它们所存放的地址之间的关系
此文档下载收益归作者所有