C++第3章指针.ppt
《C++第3章指针.ppt》由会员分享,可在线阅读,更多相关《C++第3章指针.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 3章章 指针指针Visual C+与面向对象程序设计教程教学目标教学目标v介绍介绍+中指针的基本概念。中指针的基本概念。学习要求学习要求v掌握指针的概念和定义方法。掌握指针的概念和定义方法。v掌握指针的操作符和指针的运算掌握指针的操作符和指针的运算v掌握指针与数组的关系。掌握指针与数组的关系。v掌握指针与字符串的关系。掌握指针与字符串的关系。v掌握掌握new和和delete操作符作用和使用方法。操作符作用和使用方法。授课内容授课内容v3.1 3.1 地址与指针地址与指针v3.2 3.2 指针运算指针运算v3.3 3.3 指针与数组指针与数组v3.4 3.4 动态存储分配动态存储分配v3.
2、5 3.5 指针和函数(自学内容)指针和函数(自学内容)地地 址址v计算机的内存储器就象一个一维数组,每个数组元计算机的内存储器就象一个一维数组,每个数组元素就是一个存储单元。素就是一个存储单元。v地址是存放信息数据的内存单元的编号。地址是存放信息数据的内存单元的编号。v程序中定义的任何变量、数组或函数等,在编译时程序中定义的任何变量、数组或函数等,在编译时都会在内存中分配一个确定的地址单元。都会在内存中分配一个确定的地址单元。vC+规定:规定:变量的地址变量的地址:可以用取地址运算符可以用取地址运算符&来获取来获取数组的地址数组的地址:可以用数组名表示可以用数组名表示函数的地址函数的地址:可
3、以用函数名表示可以用函数名表示指指针针v指针是指针是C+语言中的一种数据类型,是专门用来处理地址语言中的一种数据类型,是专门用来处理地址的;也可以说:的;也可以说:指针是包含另一个变量地址的变量指针是包含另一个变量地址的变量。v指针变量用星号指针变量用星号*表示,定义指针变量是通过定义该表示,定义指针变量是通过定义该指针所指向的变量类型进行的。指针所指向的变量类型进行的。例如例如:int*ptr;ptr是一个整形的指针变量是一个整形的指针变量v指针运算符指针运算符*具有取地址内容的作用具有取地址内容的作用。例如例如:x=5;ptr=&x;*(&x)即取即取x地址中值地址中值5地址和指针的关系地
4、址和指针的关系v用来存放地址的变量就叫作指针变量。用来存放地址的变量就叫作指针变量。v设设 intint x x,*ptrptr ;当定义了整型变量当定义了整型变量x x和指针和指针ptrptr后,系统分配两个后,系统分配两个存储单元存储单元10001000和和10041004;v执行执行 x=3x=3;v执行执行 ptr=&xptr=&x;v执行执行*ptrptr=5=5;100010043xptr100010003510001004&x1004&x指针的声明指针的声明 v声明的一般格式:声明的一般格式:类型描述符类型描述符*指针变量名表;指针变量名表;v举例:举例:int *ptr;flo
5、at *array;char *s1,*s2;v指针类型指针类型内存地址值是固定不变的,不同类型的指针本身所占据的存储区域都内存地址值是固定不变的,不同类型的指针本身所占据的存储区域都一样大。一样大。规定了用指针间接访问数据时的访问方式规定了用指针间接访问数据时的访问方式为指针的算术运算提供依据为指针的算术运算提供依据指针声明的举例指针声明的举例v指针在指针在定义后定义后必须必须初始化初始化才能使用;否则,结果才能使用;否则,结果不确定。不确定。v指针初始化的一般格式:指针初始化的一般格式:指针变量名指针变量名=数据对象;数据对象;数据对象可以是变量、数组、函数、结构等。数据对象可以是变量、数
6、组、函数、结构等。v举例:举例:int*ptr,i=10;ptr=&i;/指向单个变量指向单个变量char*sp=“string”;/指向字符串指向字符串int a5,*ap;ap=a;/指向数组指向数组int max(),(*fp)();fp=max;/指向函数指向函数3.2 指针的运算指针的运算1 1“*”和和“&”运算符运算符2 2指针变量算术运算指针变量算术运算3 3指针变量比较运算指针变量比较运算4 4指针变量下标运算指针变量下标运算“*”和和“&”运算符运算符v“&”称为取地址运算符,用以返回变量的指针,即变量称为取地址运算符,用以返回变量的指针,即变量的地址;的地址;v“*”称为
7、指针运算符,用以返回指针所指向的基类型变称为指针运算符,用以返回指针所指向的基类型变量的值。量的值。v例如:例如:intint *ptr*ptr;/声明声明ptrptr是一个是一个intint型指针型指针y=y=*ptr*ptr;/将指针将指针ptrptr所指向的值赋给变量所指向的值赋给变量y yintint&ref;&ref;/声明一个声明一个intint型的引用型的引用ref ref ptrptr=&x;=&x;/取变量取变量x x的地址的地址*ptr*ptr=2;=2;例例3.1 交换两个变量的值交换两个变量的值v算算 法:法:交换两个变量交换两个变量x x和和y y的值一定要用到第三个
8、变量的值一定要用到第三个变量t t作为周转:作为周转:t=x;t=x;x=y;x=y;y=t;y=t;v实参与形参有实参与形参有3 3种结合方式:种结合方式:值调用、值调用、地址调用地址调用和引用调用和引用调用例例3.1 交换两个变量的值交换两个变量的值void swap(void swap(intint x,intx,int y)y)intint tmptmp;tmptmp=x;x=y;y=x;x=y;y=tmptmp;void main()void main()intint x=2,y=3;x=2,y=3;coutcout“x=x=“xx“,y=,y=“yyendlendl;swap(x,
9、y);swap(x,y);coutcoutAfter exchange x&y:After exchange x&y:”endlendl;coutcout“x=x=“xx“,y=,y=“yyendlendl;例例3.1 交换两个变量的值(修改后)交换两个变量的值(修改后)void swap(void swap(intint *xp,int*xp,int *yp*yp)intint tmptmp;tmptmp=*xp*xp;*xp*xp=*yp*yp;*yp*yp=tmptmp;void main()void main()intint x=2,y=3;x=2,y=3;coutcout“x=x=“
10、xx“,y=,y=“yyendlendl;swap(&x,&y);swap(&x,&y);coutcoutAfter exchange x&y:After exchange x&y:”endlendl;coutcout“x=x=“xx“,y=,y=“yyendlendl;图图3.4 函数函数swap()中的运算结束时中的运算结束时的内存分配示意图的内存分配示意图指针变量的其他运算指针变量的其他运算v指针赋值指针赋值 将一个指针赋值给另一个指针,结果是两个指针指向一个相将一个指针赋值给另一个指针,结果是两个指针指向一个相同的地址单元。同的地址单元。例如,例如,jp=&a;ip=jp;ip和和jp
11、都指向都指向a。v指针的关系运算指针的关系运算表示所指变量在内存中的位置关系表示所指变量在内存中的位置关系例如,例如,ip=jpv指针的算术运算指针的算术运算只进行加减,完成指针移动,实现对不同数据单元的访问操只进行加减,完成指针移动,实现对不同数据单元的访问操作。对不同的类型,移动的单位长度不同。作。对不同的类型,移动的单位长度不同。指针指针+/-整数表达式整数表达式 例如,例如,ptr+;指针指针ptr右移一个地址。右移一个地址。3.3、指针与数组、指针与数组v计算机中处理数组时,实际上是将计算机中处理数组时,实际上是将aiai转换成转换成*(a+a+下标下标表达式值)的形式。即表达式值)
12、的形式。即 ai *ai *(a+ia+i)因为数组名可以表示该数组的首地址,所以也就有:因为数组名可以表示该数组的首地址,所以也就有:ai *ai *(a+ia+i)*(ptr+iptr+i)其中,其中,ptrptr是指向是指向a a的指针。的指针。v由此可见,用指针处理数组及元素是最快捷的方式由此可见,用指针处理数组及元素是最快捷的方式例题分析例题分析v设设char*ptr,*qtr;char string6;v令令ptr=string;string1=*(ptr+1)qtr=ptr+strlen(string);Big010001003100010011002100310041005例例
13、3.2 字符串复制字符串复制v算法分析算法分析令指针指向字符串令指针指向字符串1首地址首地址将当前地址内容送字符串将当前地址内容送字符串2串串1 1地址地址+1+1重复重复、直到整个字符串复制完毕为止;直到整个字符串复制完毕为止;用循环语句实现,结束条件是当前值不为用循环语句实现,结束条件是当前值不为0。例例3.2 子函数子函数/Example 6.2:/Example 6.2:复制字符串复制字符串mystrcpymystrcpy(char(char*destin*destin,char*source),char*source)while(*source!=0)while(*source!=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 指针
限制150内