欢迎来到天天文库
浏览记录
ID:48181551
大小:594.50 KB
页数:45页
时间:2020-01-18
《C++第3章指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章指针VisualC++与面向对象程序设计教程教学目标介绍C++中指针的基本概念。学习要求掌握指针的概念和定义方法。掌握指针的操作符和指针的运算掌握指针与数组的关系。掌握指针与字符串的关系。掌握new和delete操作符作用和使用方法。授课内容3.1地址与指针3.2指针运算3.3指针与数组3.4动态存储分配3.5指针和函数(自学内容)地址计算机的内存储器就象一个一维数组,每个数组元素就是一个存储单元。地址是存放信息数据的内存单元的编号。程序中定义的任何变量、数组或函数等,在编译时都会在内存中分配一个确定的地址单元。C++规定:变量的地址:
2、可以用取地址运算符‘&’来获取数组的地址:可以用数组名表示函数的地址:可以用函数名表示指针指针是C++语言中的一种数据类型,是专门用来处理地址的;也可以说:指针是包含另一个变量地址的变量。指针变量用星号‘*’表示,定义指针变量是通过定义该指针所指向的变量类型进行的。例如:int*ptr;ptr是一个整形的指针变量指针运算符‘*’具有取地址内容的作用。例如:x=5;ptr=&x;*(&x)即取x地址中值5地址和指针的关系用来存放地址的变量就叫作指针变量。设intx,*ptr;当定义了整型变量x和指针ptr后,系统分配两个存储单元1000和100
3、4;执行x=3;执行ptr=&x;执行*ptr=5;100010043xptr100010003510001004&x1004&x指针的声明声明的一般格式:类型描述符*指针变量名表;举例:int*ptr;float*array;char*s1,*s2;指针类型内存地址值是固定不变的,不同类型的指针本身所占据的存储区域都一样大。规定了用指针间接访问数据时的访问方式为指针的算术运算提供依据指针声明的举例指针在定义后必须初始化才能使用;否则,结果不确定。指针初始化的一般格式:指针变量名=数据对象;数据对象可以是变量、数组、函数、结构等。举例:int
4、*ptr,i=10;ptr=&i;//指向单个变量char*sp=“string”;//指向字符串inta[5],*ap;ap=a;//指向数组intmax(),(*fp)();fp=max;//指向函数3.2指针的运算1.“*”和“&”运算符2.指针变量算术运算3.指针变量比较运算4.指针变量下标运算“*”和“&”运算符“&”称为取地址运算符,用以返回变量的指针,即变量的地址;“*”称为指针运算符,用以返回指针所指向的基类型变量的值。例如:int*ptr;//声明ptr是一个int型指针y=*ptr;//将指针ptr所指向的值赋给变量yin
5、t&ref;//声明一个int型的引用refptr=&x;//取变量x的地址*ptr=2;例3.1交换两个变量的值算法:交换两个变量x和y的值一定要用到第三个变量t作为周转:t=x;x=y;y=t;实参与形参有3种结合方式:值调用、地址调用和引用调用例3.1交换两个变量的值voidswap(intx,inty){inttmp;tmp=x;x=y;y=tmp;}voidmain(){intx=2,y=3;cout<<“x=“<6、;cout<<“x=“<7、个指针赋值给另一个指针,结果是两个指针指向一个相同的地址单元。例如,jp=&a;ip=jp;ip和jp都指向a。指针的关系运算表示所指变量在内存中的位置关系例如,ip==jp指针的算术运算只进行加减,完成指针移动,实现对不同数据单元的访问操作。对不同的类型,移动的单位长度不同。指针+/-整数表达式例如,ptr++;指针ptr右移一个地址。3.3、指针与数组计算机中处理数组时,实际上是将a[i]转换成*(a+下标表达式值)的形式。即a[i]*(a+i)因为数组名可以表示该数组的首地址,所以也就有:a[i]*(a+i)*(ptr+i)其中,ptr8、是指向a的指针。由此可见,用指针处理数组及元素是最快捷的方式例题分析设char*ptr,*qtr;charstring[6];令ptr=string;string[
6、;cout<<“x=“<7、个指针赋值给另一个指针,结果是两个指针指向一个相同的地址单元。例如,jp=&a;ip=jp;ip和jp都指向a。指针的关系运算表示所指变量在内存中的位置关系例如,ip==jp指针的算术运算只进行加减,完成指针移动,实现对不同数据单元的访问操作。对不同的类型,移动的单位长度不同。指针+/-整数表达式例如,ptr++;指针ptr右移一个地址。3.3、指针与数组计算机中处理数组时,实际上是将a[i]转换成*(a+下标表达式值)的形式。即a[i]*(a+i)因为数组名可以表示该数组的首地址,所以也就有:a[i]*(a+i)*(ptr+i)其中,ptr8、是指向a的指针。由此可见,用指针处理数组及元素是最快捷的方式例题分析设char*ptr,*qtr;charstring[6];令ptr=string;string[
7、个指针赋值给另一个指针,结果是两个指针指向一个相同的地址单元。例如,jp=&a;ip=jp;ip和jp都指向a。指针的关系运算表示所指变量在内存中的位置关系例如,ip==jp指针的算术运算只进行加减,完成指针移动,实现对不同数据单元的访问操作。对不同的类型,移动的单位长度不同。指针+/-整数表达式例如,ptr++;指针ptr右移一个地址。3.3、指针与数组计算机中处理数组时,实际上是将a[i]转换成*(a+下标表达式值)的形式。即a[i]*(a+i)因为数组名可以表示该数组的首地址,所以也就有:a[i]*(a+i)*(ptr+i)其中,ptr
8、是指向a的指针。由此可见,用指针处理数组及元素是最快捷的方式例题分析设char*ptr,*qtr;charstring[6];令ptr=string;string[
此文档下载收益归作者所有