地址和指针 - 副本.ppt

地址和指针 - 副本.ppt

ID:48810662

大小:2.70 MB

页数:22页

时间:2020-01-27

地址和指针 - 副本.ppt_第1页
地址和指针 - 副本.ppt_第2页
地址和指针 - 副本.ppt_第3页
地址和指针 - 副本.ppt_第4页
地址和指针 - 副本.ppt_第5页
资源描述:

《地址和指针 - 副本.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第8章地址和指针第8章地址和指针变量的地址和指针指针变量的定义和指针变量的基类型给指针变量赋值给指针变量赋地址值给指针变量赋“空”值对指针变量的操作通过指针来引用一个存储单元移动指针指针比较函数之间地址值的传递形参为指针变量时实参和形参之间的数据传递通过传送地址值在被调用函数中直接改变调用函数中的变量的值函数返回地址值变量的地址和指针一个变量实质上代表“内存中的某个存储单元”。计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存地址。在VC6.0中,shortint型数据占2字节、int型数据和floa

2、t型数据占4字节、double型数据占8字节、char型数据占1字节、指针变量占4字节。若有定义:shortinta,b;floatx; abx10121013101510161201120212031204变量在内存中所占字节的地址示意图变量的地址和指针对变量进行存取操作,就是对某个地址的存储单元进行操作。这种直接按变量的地址存取变量值的方式称为“直接存取”方式。用来存放内存地址的变量称为“指针变量”。ap1012p200210121013存放地址的指针变量示意图变量p存放的是变量a的内存地址,通过变量p存取变量a的值的方式称为“间接存取

3、”方式。变量p就是指针变量。称指针变量p指向了变量a,变量a是指针变量p所指的对象,这种“指向”关系是通过地址建立的。指针变量的定义和指针变量的基类型定义指针变量的一般形式:类型名*指针变量名1,*指针变量名2,……;其中,每个变量前的星号*是一个说明符,用来说明该变量是指针变量,该星号不可省。int*pi,*pj;这里说明了pi和pj是两个指向整型(int类型)变量的指针,也就是说变量pi和pj中只能存放int类型变量的地址,称int是指针变量pi和pj的基类型。例如指针变量的定义和指针变量的基类型double*pd;/*pd的基类型为d

4、ouble型,pd中只能存放double型变量的地址*/char*s1,*s2;/*s1和s2的基类型为char型,s1和s2中只能存放char型变量的地址*/一个指针变量中存放的是一个存储单元的地址值。“一个存储单元”代表的字节数不同:在VC++中,对shortint类型整数,它代表2个字节;对int类型或float类型,它代表4个字节,这就是基类型的不同含义。例如给指针变量赋值——给指针变量赋地址值1.通过求地址运算符(&)获得地址值intk=1,*q,*p;q=&k;把变量k的地址赋予了q,下图是指针变量q与变量k的关系示意图:q指向

5、了变量k。说明:求地址运算符&只能应用于变量和数组元素,不可以用于表达式、常量。表达式q=&(k+1)是错误的。一个指针变量可以通过不同的方式获得一个确定的地址值,从而指向一个具体的对象。给指针变量赋值——给指针变量赋地址值2.通过指针变量获得地址值可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,使这两个指针指向同一地址。例如,intk=1,*q,*p;q=&k;p=q;使指针变量p中也存放了变量k的地址,也就是说指针变量p和q都指向了变量k。图表示了变量q、p和k的关系:注意:当进行赋值运算时,赋值号两边指针变量的基类型必须

6、相同。给指针变量赋值——给指针变量赋“空”值给指针变量赋NULL值,使指针变量具有一个确定的值—“空”。例如:int*p=NULL;NULL的代码值为0,当执行了以上的赋值语句后,称p为空指针。与其等价的语句:p=''或p=0;NULL是在stdio.h中定义的预定义符,使用NULL时,应该在程序的前面用预定义行:#include注意:这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值—“空”。企图通过一个空指针去访问一个存储单元时,将会得到一个出错信息。对指针变量的操作——通过指针来引用一个存储单元“间接

7、访问运算符”(也称间址运算符)称为单目运算符:“*”。当指针变量中存放了一个确切的地址值时,就可以用“间接访问运算符”通过指针来引用该地址的存储单元。假定有以下定义和语句:int*p,i=10,j;p=&i;j=*p;j=*p;是把p所指存储单元(i)的内容(整数10)赋予变量j,等价于:j=i;j=*(&i);首先&i求出变量i的地址,再取地址&i中的内容赋予j。根据优先级原则,可以写成:j=*&i;对指针变量的操作——通过指针来引用一个存储单元“间接访问运算符”(也称间址运算符)称为单目运算符:“*”。当指针变量中存放了一个确切的地址值

8、时,就可以用“间接访问运算符”通过指针来引用该地址的存储单元。若有以下定义和语句:int**p,*s,k=20;s=&k;p=&s;可以用图形象地表示变量p、s和k的关系:*s代

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

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

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