《数据类型指针》PPT课件.ppt
《《数据类型指针》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据类型指针》PPT课件.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 数据类型_指 针第3章 数据类型_指 针1、指针的概念2、指针运算3、指针的限定const指针4、指针与数组(补充)5、堆内存分配(补充)6、void 指针(补充)7、指针数组(补充)指针是一种特殊的数据类型。指针是一种特殊的数据类型。指针是一种特殊的数据类型。指针是一种特殊的数据类型。指针概念是指针概念是指针概念是指针概念是C+C+语言中较难理解和较难掌握的概念之一。语言中较难理解和较难掌握的概念之一。语言中较难理解和较难掌握的概念之一。语言中较难理解和较难掌握的概念之一。本章节介绍指针的概念、定义、运算等内容。本章节介绍指针的概念、定义、运算等内容。本章节介绍指针的概念、定义、运算
2、等内容。本章节介绍指针的概念、定义、运算等内容。指针变量是一种特殊的变量,变量中存放的不是某种数指针变量是一种特殊的变量,变量中存放的不是某种数指针变量是一种特殊的变量,变量中存放的不是某种数指针变量是一种特殊的变量,变量中存放的不是某种数据类型的数据,而是另一个变量或常量的地址。据类型的数据,而是另一个变量或常量的地址。据类型的数据,而是另一个变量或常量的地址。据类型的数据,而是另一个变量或常量的地址。11、指针概念指针概念 如有定义:如有定义:int value=150;char ch=M;并执行赋值语句:并执行赋值语句:并执行赋值语句:并执行赋值语句:pv=&value;pc=&ch;/
3、pv holds the address of value 由于由于pv中存放的是中存放的是value变量的地址,变量的地址,pc中存放的是中存放的是ch变量变量的地址,故称的地址,故称pv和和pc为指针变量。简称为指针(为指针变量。简称为指针(Pointer)。)。指针指向的对象称为目标或目标变量(常量)。如图指针指向的对象称为目标或目标变量(常量)。如图3.1所示:所示:150 M valuechpvpc*pv*pc图3.1 内存空间1000H1050H 0000H&value 1000H 1001H&ch 1050H&pc 11A2H 11A3H 11A1H&pv 11A0HC+规定:规
4、定:n 目标或目标变量可以用指针变量名前加上运算符目标或目标变量可以用指针变量名前加上运算符“*”表示。表示。pv的目标变量的目标变量value可表示为可表示为*pv,pc的目标变量的目标变量ch可表示为可表示为*pc,即即 *pv和和value等效等效 *pc和和ch等效等效 而而&pv和和&pc表示针变量本身的地址表示针变量本身的地址(1)、指针的定义、指针的定义指针变量也必须先定义后使用。定义的一般格式:指针变量也必须先定义后使用。定义的一般格式:类型定义符类型定义符 *指针变量名指针变量名;其中:类型定义符其中:类型定义符指针指向对象的数据类型指针指向对象的数据类型 “*”说明符,表示
5、其后的标识符是指针变说明符,表示其后的标识符是指针变 量,而不是量,而不是 一般变量。一般变量。例如:例如:int *ptr;char *name;float *pf;其中,定义其中,定义ptr,name,pf分别为指向整型、字符型和浮点型分别为指向整型、字符型和浮点型数据的指针。数据的指针。const int *ptr;/pointer to int const const char *cpc const float *point其中,其中,ptr,cpc,point为指向常量的指针。为指向常量的指针。注意:注意:指针变量可以与其他变量一起定义,如:指针变量可以与其他变量一起定义,如:int
6、 a,bb,*c;char *p,*q,ch;指针变量也可定义为全局,静态和局部的指针。指针变量也可定义为全局,静态和局部的指针。例如:例如:int num,*pn;char color,*pc;执行语句执行语句 pn=#pc=&color;则在程序中则在程序中 *pn=100;等效于等效于num=100;*pc=r;等效于等效于color=r;这里,这里,“*”作为访问目标变量的运算符,在定义指针时,作为访问目标变量的运算符,在定义指针时,“*”作为说明符。注意使用上的区别。作为说明符。注意使用上的区别。(2)、指针赋值、指针赋值 使用指针前,必须给已定义指针变量赋以指向目标变量的使
7、用指针前,必须给已定义指针变量赋以指向目标变量的地址值。地址值。“&”操作符可获取变量的地址。操作符可获取变量的地址。指针赋值的几种情况:指针赋值的几种情况:指针赋值的几种情况:指针赋值的几种情况:同种数据类型的指针变量之间可以相互赋值。同种数据类型的指针变量之间可以相互赋值。int a,*pa,*pb;pa=&a;pb=pa;/pa,pb holds the same address of a指针变量可以赋初值:指针变量可以赋初值:int a,b,c;int *pa=&a,*pc=&c;指针可初始化为空指针指针可初始化为空指针 char *p=NULL;指针变量的类型名与指向目标的数据类型一
8、致。指针变量的类型名与指向目标的数据类型一致。例如:例如:int *p,a;float b,*q;p=&b;q=&a;/错误错误 p=&a;q=&b;/正确正确例:有关指针概念的程序例:有关指针概念的程序#include using namespace std;void main()int icount=18;int *ptr=&icount;*ptr=58;couticountendl;coutptrendl;cout&icountendl;cout*ptrendl;cout&ptrendl;结果:结果:58 58 0 x0067fe00 0 x0067fdfc 0 x0067fe00(3)
9、、指针变量的地址、指针变量的地址 指针也是变量,指针变量的地址是指它本身的内存地址,指针也是变量,指针变量的地址是指它本身的内存地址,如如图图3.1所示。所示。150 M 1000H1050Hvaluechpvpc*pv*pc0000H&value 1000H1001H&ch 1050H 11A1H&pv 11A0H&pc 11A2H11A3H图示如下:图示如下:0067:FE00(&icount)58ptricount0067:FE00*ptr0067:FDFC (&ptr)图 3.2(&icount)2、指针运算指针运算 指针运算实质上是地址运算。指针运算实质上是地址运算。(1)、赋值运算
10、、赋值运算 (2)、取地址运算、取地址运算“&”(address of)和取内容运算)和取内容运算“*”(Dereference),),“&”和和“*”互为逆运算互为逆运算 例如:例如:int x,*ptr=&x;则则&(*ptr)表示指针表示指针ptr *(&x)表示变量表示变量x(3)、指针与整数的加减运算、指针与整数的加减运算在数组中,指针变量加上或减去一个整数在数组中,指针变量加上或减去一个整数n,表示:,表示:指针由当前所指向的位置向前或向后移动指针由当前所指向的位置向前或向后移动n个数据元素的位置。个数据元素的位置。移动后的实际地址为:移动后的实际地址为:p n*sizeof(数据
11、类型数据类型)(4)、指针的关系运算、指针的关系运算指向同种数据类型的指针可作关系运算,表示它们所存放的指向同种数据类型的指针可作关系运算,表示它们所存放的地址之间的关系。地址之间的关系。,=,!=(1)(1)、指向常量的指针、指向常量的指针、指向常量的指针、指向常量的指针 在指针定义语句的类型名前加上关键字在指针定义语句的类型名前加上关键字const,表示指向的对象是常量。,表示指向的对象是常量。例如:例如:const int a=80;const int b=15;const int*pi=&a;/定义定义pi 为指向常量的指针为指向常量的指针 *pi=93;/错误,不能修改指向的常量错误
12、,不能修改指向的常量 pi=&b;/正确,指向另一个常量正确,指向另一个常量 注意:实际上常量指针是可以指向变量的,但这时候我们不能通过常量指注意:实际上常量指针是可以指向变量的,但这时候我们不能通过常量指针来修改变量的内容,但可以通过变量本身来改变其值。针来修改变量的内容,但可以通过变量本身来改变其值。(2)(2)、指针常量指针常量指针常量指针常量 定义指针时,在指针名前加上定义指针时,在指针名前加上const 关键字,表示指针本身是常量。必关键字,表示指针本身是常量。必须在定义时进行初始化。例如:须在定义时进行初始化。例如:char*const pc=“asdf”;pc=“dfgh”;/错
13、误,不能修改指针常量中的地址错误,不能修改指针常量中的地址 *pc=b;/正确,内容被修改为正确,内容被修改为“bsdf”(3)(3)、指向常量的指针常量、指向常量的指针常量、指向常量的指针常量、指向常量的指针常量 定义指针时,在类型名及指针名前加上定义指针时,在类型名及指针名前加上const 关键字,表示指向常量的指关键字,表示指向常量的指针常量。必须在定义时进行初始化。针常量。必须在定义时进行初始化。33、const const 指针指针 const int ci=7,di=30;const int*const cpc=&ci;const int*const cpd=&di;cpd=&ci
14、;/错误,指针值不能被修改错误,指针值不能被修改 *cpd=50;/错误,不能修改指针指向的对象值错误,不能修改指针指向的对象值 指向常量的指针常量可表示如下:指向常量的指针常量可表示如下:0067:PD660067:P600300067:P600指针常量指针常量CPD常量常量di图 7.3 4 4、指针与数组指针与数组 C+规定定义一个数组时,用数组名存放该数组在内存规定定义一个数组时,用数组名存放该数组在内存中的首地址。中的首地址。当把数组名赋予一个指针变量后,该指针指向数组,当把数组名赋予一个指针变量后,该指针指向数组,可以通过指针移动方式访问数组元素。可以通过指针移动方式访问数组元素。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型指针 数据类型 指针 PPT 课件
限制150内