欢迎来到天天文库
浏览记录
ID:39963535
大小:847.31 KB
页数:87页
时间:2019-07-16
《c高级语言程序设计第6章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2021/9/21C++高级语言程序设计第6章指针和引用北京邮电大学信息与通信工程学院北京邮电大学信息与通信工程学院指针(Pointer)是C++和C的一种数据类型。很多其他高级语言也有类似的数据类型。引用(Reference)则是C++所特有的一种数据类型。指针和引用在概念上和使用上都有相似之处,但是也有重要的差别。2021/9/2-2-北京邮电大学信息与通信工程学院第六章指针和引用6.1指针的概念6.2指针的运算6.3指针访问动态内存6.4指向结构体的指针6.5引用概念6.6指针和引用作为函数的参数6.7指针和引用作为函数的返回值6.8指针和字符串6.9通过指针
2、访问数组2021/9/2-3-北京邮电大学信息与通信工程学院6.1指针的概念2021/9/24北京邮电大学信息与通信工程学院2021/9/2北京邮电大学信息与通信工程学院-5-6.1.1指针和指针变量指针是变量的地址。或者说是在内存中,存放某种类型变量的地址。例如,定义了整型变量a,a的地址就是一个指针。也可以不定义任何变量,只是指定内存某个地址开始(如0x00430100)的4个字节存放整型变量,这样的地址也是指针。存放指针的变量就是指针变量。2021/9/2北京邮电大学信息与通信工程学院-6-6.1.1指针和指针变量当声明了一个指针变量后,确定了三件事:变量本身
3、在内存中所分配的地址和字节数,指针变量总是占有4个字节;系统允许的地址范围,以及地址单元内可以存放的内容;指针变量可以进行的运算。访问指针变量时,只能看到地址。只有通过这个地址,才能访问地址单元中的内容。这样的访问称为对于内存单元的间接访问。2021/9/2北京邮电大学信息与通信工程学院-7-6.1.2指针变量的声明和初始化指针变量声明的格式是:<类型名>*变量名1,*变量名2;例如:int*va1,*va2;char*ch1,*ch2;指针变量在声明后,变量的值(地址)是随机的。这样的指针变量是不能安全的使用的。因为其中的随机地址完全可能不是有效的数据地址。202
4、1/9/2北京邮电大学信息与通信工程学院-8-6.1.2指针变量的声明和初始化在声明指针变量时的“*”,有两个含义:声明变量va1、va2、ch1、ch2都是指针变量;说明变量va1和va2的类型是(int*)型,即指向整型变量的指针。va1和va2所指定的地址单元中,只能存放整型数据。类似地,ch1和ch2的类型是(char*)型,它们所指定的地址单元中,只能存放字符。指针变量都是有类型的.指针变量的类型就是它所指定的地址单元中存放的数据的类型。2021/9/2北京邮电大学信息与通信工程学院-9-6.1.2指针变量的声明和初始化指针变量的初始化有两种方法:在声明时
5、的初始化和声明后的初始化。声明指针变量时就进行初始化的格式是:<类型名>*指针变量名=&变量名;其中的变量名应该是已经声明或定义的同类型变量名。例如:charch1=’Y’,ch2=’A’;char*pch1=&ch1,*pch2=&ch2;2021/9/2北京邮电大学信息与通信工程学院-10-6.1.2指针变量的声明和初始化也可以在声明指针变量后,用赋值的方式对它们进行初始化。例如:inti1=’Y’,i2=’A’;int*pi1,*pi2;pi1=&i1;pi2=&i2;没有初始化指针变量是不可以使用的。编译带有这样的指针变量的程序,编译系统会给出警告,而运行时
6、会出现错误。6.2指针的运算2021/9/2-11-北京邮电大学信息与通信工程学院6.2指针的运算表6.1指针的运算2021/9/2-12-北京邮电大学信息与通信工程学院2021/9/2北京邮电大学信息与通信工程学院-13-6.2.1指针的赋值运算指针的赋值运算一定是地址的赋值。用来对指针变量赋值的可以是:同类型变量的地址;同类型的已经初始化的指针变量;其他同类型的指针。此外,也可以用0或者NULL对指针变量赋值。使得变量包含的是“空指针”,即不指向任何的内存物理地址。必须注意:不同类型的指针是不可以互相赋值的。在指针赋值时,不存在类型自动转换的机制。2021/9/
7、2北京邮电大学信息与通信工程学院-14-例6.1观察以下指针赋值运算的结果。如果将注释去掉,结果将如何?#includeusingnamespacestd;voidmain(){intva1=100,*pva1;floatvf1='A',*pvf1,*pvf2;int*pva2=NULL;cout<<"valueofpva1is"<
此文档下载收益归作者所有