指针引用与动态内存分配

指针引用与动态内存分配

ID:41526741

大小:287.51 KB

页数:51页

时间:2019-08-26

指针引用与动态内存分配_第1页
指针引用与动态内存分配_第2页
指针引用与动态内存分配_第3页
指针引用与动态内存分配_第4页
指针引用与动态内存分配_第5页
资源描述:

《指针引用与动态内存分配》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6.1选择排序算法实现功能:将数组list中的n个数按照从大到小的顺序排好之后再输出它们(此n个数通过使用函数rand来自动产生)。程序见p6_1.cpp16.2指针类型6.2.1指针变量说明指针类型的变量说明格式为:〈类型名〉*〈指针变量名〉=〈初值〉;例如:inti=3;int*pi;//pi为int*型变量,其取值为一个int型变量的地址,//也称pi为指向int型数据的指针变量(简称指针)2pi=&i;//&作单目算符时为“取变量地址”,//此处将变量i的地址赋给指针变量picout<<*pi;//输出:*pi之值即3//“*”作单目算符时为“取

2、内容”//(取指针所指向的那一变量的内容)*pi=123;//给pi所指向的那一变量,即i,赋值123//(等同于:i=123;)3说明:类型名:任一基本类型名,基本类型的派生类型名,用户定义的类﹑枚举类型﹑结构类型﹑联合类型名。类型名为void时,称为不确定类型的指针类型。类型名也可以是由〈类型名〉*表示的指针类型名,这时称为多级指针(指针类型的指针)。符号*:表示其后说明的变量为指针变量。指针变量名:标识符。初值:可缺省。它可以是该类型的某一变量的地址。4一个指针变量,可有三种状态:(1)未赋任何值,“悬空”状态。(2)被赋予NULL值。未指向任一变

3、量。(3)指向某一变量。注:规定NULL与整数0通用,它是唯一可以赋给任一类型指针变量的值。56.2.2指针变量的操作1.取地址运算&和取内容运算*注意如下3处出现的*pi,它们的含义不相同:inti=23,*pi=&i;cout<<*pi;*pi=56;6第一行的“*pi”处于变量说明处,是说明pi为“int*”型变量,并同时将该指针变量初始化为i的地址。不可将此处的“*”理解为“取内容”运算,它与前面的int联合起来以说明pi为“int*”型变量。第二行的“*pi”表示指针变量pi所指向的那一变量(即i)的内容(*理解为“取内容”运算,使用其值)。第

4、三行的“*pi”为左值(存储空间概念),表示要改变指针变量pi所指向的那一变量(即i)空间中的内容(使用其存储空间)。72.数组指针的算术运算1)若p为指针,已指向数组的某一元素,则p+i(或p-i,其中i为正整数)也为一指针,它指向当前p已指元素的后面(或前面)第i个元素。例1:inta[10];//任一数组名字a都是一个常量指针,//代表数组的首地址,也即,a总等同于&a[0]8则,无论何时,下述两种表示数组元素a[i]的方式总是相同的:a[0]<==>*aa[1]<==>*(a+1)...a[9]<==>*(a+9)另,下述两种表示数组元素a[i]

5、之地址的方式也总是相同的:&a[0]<==>a&a[1]<==>a+1...&a[9]<==>a+99例2:inta[10];int*pa=a;//pa为变量指针,此时pa与a//均指向数组a的首元素则,下述三种表示数组元素a[i]的方式是等同的:a[0]<==>*a<==>*paa[1]<==>*(a+1)<==>*(pa+1)...a[9]<==>*(a+9)<==>*(pa+9)10另,下述三种表示数组元素a[i]之地址的方式也是等同的:&a[0]<==>a<==>pa&a[1]<==>a+1<==>pa+1...&a[9]<==>a+9<==>p

6、a+9而pa+=3;及pa--;也都为正确的句子(但,a+=3;及a--;却都是不正确的句子!为什么?)。11另外需注意的是:pa是变量,它当前所指的元素可以随时变化,从而pa+1,pa++等语句所指向的元素也跟着变化。换句话说,使用指针变量去访问数组元素时,应随时检查指针变量当前所指向的数组元素。指针变量也可以指向二维、三维等多维数组元素,例如:二维数组inta[3][4]的存储结构为:a[0]→a[0][0]a[0][1]a[0][2]a[0][3]a[1]→a[1][0]a[1][1]a[1][2]a[1][3]a[2]→a[2][0]a[2][1

7、]a[2][2]a[2][3]122)若p,q都为同类型的指针,则p-q为p与q之间的数据项数(当p,q指向同一数组时,结果有意义)。3.指针的关系运算指针变量可以参加关系运算。这要分三种情况:(1)一般指针可以进行相等和不等的比较,指向同一变量(地址)者为相等,否则不等。(2)任一指针可以和指针常量NULL进行相等和不等的比较。如一指针p已经指向了某变量,则它不等于NULL。13(3)数组指针,可以指向该数组的各个元素,且一个数组的各个元素在内存中是顺序存放的,故数组指针之间不但可以进行相等和不等比较,也可以进行大于,小于,大于等于,小于等于等的比较。

8、146.2.3指针与数组1.指向数组元素的指针2.指向数组的指针把数组作为整体,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。