- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 指针 中国铁道出版社 6.1 指针和指针变量的概念 1.内存单元的地址 内存的逻辑结构由以字节为单位的连续存储单元构成 每个单元都有一个惟一的编号称为内存单元的地址 2.变量的地址 定义一个变量后,编译系统根据变量的类型为其分配若干个字节的连续内存空间。 在变量分配到的连续内存单元中,第一个内存单元的地址称为变量的地址 变量i的地址是2000 变量j的地址是2004 3.变量的指针和指针变量 变量的地址称为变量的指针 专门用来存放指针即地址的变量称为指针变量 指针变量的值=指针(即另一个变量的地址) 当一个指针变量p保存的是某个变量i的地址时,就称变量p指向了变量i。 4.变量的直接存取和间接存取 直接存取或直接访问方式: 对变量进行的存取是直接按变量的名称进行存取 例如:cini; k=i; 间接存取方式: 通过指向某个变量的指针变量间访问变量a的值 5.与指针运算有关的运算符 (1)取地址运算符“” 作用:求出运算对象的地址。 例如: 输出变量a的地址: couta; 将变量i的地址赋给指针变量p: p=i; 符号“”的不同作用: int inti=i; // 作为引用定义 int *p=i; // 作为地址运算符 c=ab; // 作为位与运算符 (2)指向运算符“*” 指向运算符“*”又称为间接访问运算符,结果是取出地址中保存的数据。 例如: 已知指针变量p指向变量i,则通过p实现对变量i的间接赋值: *p=4; 这与 i=4;的效果是一样的。 6.2 指针变量 使用指针变量的三个步骤: (1)定义指针变量; (2)对指针变量进行赋值,就是使其指向某个变量; (3)间接访问(引用)该指针变量指向的变量的值。 6.2.1 指针变量的定义 1.指针变量的定义格式 格式: 类型标识符 * 指针变量名 例如: int *x, *y; 指针变量的使用说明: (1)一个指针变量只能指向一种类型的变量; (2)指针变量必须指向一个变量后,才能对其指向的对象进行操作。 【例6-1】指针变量的定义和使用 #include iostream using namespace std; void main() { int a=100,*p; // 指针变量的定义 p=a; // 指针变量的指向 cout*p; // 使用指针变量进行间接访问 } 2.指针变量的基类型 指针变量所指向的变量类型称为“基类型” 例如,定义:int *i1, *i2; char *c1, *c2; float *f1, *f2; 变量i1、i2的基类型是整型(int),变量c1、c2的基类型是字符型(char),变量f1、f2的基类型则是浮点型(float)。 通过指针变量的值可以知道连续单元的起始地址 通过基类型可以知道从起始地址开始连续多少个单元为该指针变量所指向的变量的单元。 6.2.2 指针变量可以进行的运算 1.赋值运算 (1)通过求地址运算符,例如: p=a; (2)通过其它指针变量获得,例如:p=q; 要求这两个变量具有相同的基类型 (3) 通过运算符获得,例如: p=new int[100]; 其中new是动态申请存储空间的运算符 (4)给指针变量赋空值,例如: p=NULL; 2.算术运算 设px和py是具有相同基类型的指针变量,n为整数。 (1)px+n和px-n 结果为指针,px当前位置的前方或后方n 个数据位置。 px±n的实际地址: px±n×数据长度(字节) (2)px++或++px :使px指向下一个数据位置 (3)px--或--px :使px指向上一个数据位置 (4)px-py 结果是两个指针变量所指向的地址间相隔的数据个数。 3.关系运算 两个指针变量间的关系运算是比较其指向的内存地址位置之间的前后关系,结果为逻辑值0或1。 例如:如果pxpy成立,则表示px所指的单元的位置在py所指单元位置之前。 6.2.3 动态存储空间的分配 动态存储分配方式 在程序运行期间,根据用户输入的信息决定分配空间的大小,该空间不再使用时,可以由用户进行释放 申请空间和释放空间分别通过运算符new和delete实现 1.动态申请存储空间 格式: 指针变量= new数据类型(初值); 在申请空间时,如果没有足够的内存单元,返回空指针NULL,表示动态申请空间操作失败。 (1)动态申请空间 【例6-2】动态申请空间,空间大小为整型数据所占的空间 #include iostre
您可能关注的文档
- C#程序设计案例教程 周庞荣 易斌 第3章 常量和变量新.ppt
- C#程序设计案例教程 周庞荣 易斌 第4章 运算符与表达式新.ppt
- C#程序设计案例教程 周庞荣 易斌 第5章 程序控制语句新.ppt
- C#程序设计案例教程 周庞荣 易斌 第7章 函数新.ppt
- C#程序设计案例教程 周庞荣 易斌 第8章 面象对象程序设计基础新.ppt
- C#程序设计案例教程 周庞荣 易斌 第9章 继承新.ppt
- C#程序设计案例教程 周庞荣 易斌 第13章 文件的输入和输出新.ppt
- C#程序设计陈语林 第01章新.ppt
- C#程序设计陈语林 第03章新.ppt
- C#程序设计陈语林 第05章新.ppt
- C++程序设计 冯博琴 C++第7章新.ppt
- C++程序设计 冯博琴 C++第8章新.ppt
- C++程序设计 冯博琴 C++第9章新.ppt
- C++程序设计 冯博琴 C++第10章新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第2章 C++基础知识新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第6章 模块化的程序设计新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第7章 指针与引用的程序设计新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第8章 类与对象的程序设计新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第9章 复杂对象的程序设计新.ppt
- C++程序设计 连卫民 何樱 韩彦锋 等 第10章 类继承的程序设计新.ppt
文档评论(0)