第7章109间接访问-指针剖析
第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 指针介绍 本章将介绍C++语言的一个重要的特性:指针,为了成为一个优秀的C++语言程序员,你必须掌握指针并熟练地使用它们。 指针的概念 指针就是把地址作为数据处理 指针变量:存储地址的变量 变量的指针:当一个变量存储另一个变量的地址时,那我们说它就是那个变量的指针 使用指针的目的:提供间接访问 指针的概念 续 如在某一程序中定义了 int x = 2; 如系统给x分配的空间是1000号单元,则指向x的指针是另一个变量p,p中存放的数据为1000 1000号单元的内容有两种访问方式: 访问变量x(直接访问) 访问变量p指向的单元的内容(间接访问) 定义指针变量 定义指针变量要告诉编译器该变量中存放的是一个地址。 指针变量的主要用途是提供间接访问,因此也需要知道指针指向的单元的数据类型 指针变量的定义 类型标识符 *指针变量; 如:int *intp; double *doublep; int *p, x, *q; 指针变量的操作 如何让指针指向某一变量?因为我们不知道系统分配给变量的真正地址是什么。 用地址运算符 “” 解决。如表达式 “x” 返回的是变量 x 的地址。如:intp = x; 运算符后面不能跟常量或表达式。如 2 是没有意义的,(m * n + p )。也是没有意义的 如何通过指针变量处理和改变它所指向的单元的值? 用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向的这个单元的内容。如:*intp = 5 等价于 x = 5 在对 intp 使用引用运算之前,必须先对 intp 赋值 指针实例 指针使用 指针变量可以指向不同的变量。如上例中intp指向x,我们可以通过对intp的重新赋值改变指针的指向。如果想让intp指向y,只要执行intp=y就可以了。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指向同一内存空间。 空指针 指针没有指向任何空间 空指针用常量NULL表示,NULL的值一般赋为0 不能引用空指针指向的值 指针变量的使用 设有定义 int x, y; int *p1,*p2; 指针实例 指针的初始化 指针在使用前必须初始化。 和别的变量一样,定义指针不初始化是一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值为0。它可被用来初始化一个指针,表示不指向任何地址。 思考:int *p; *p = 5; 有什么问题? 第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 指针运算和数组 指向数组元素的指针 数组元素是一个独立的变量,因此可以有指针指向它。如:p = a[1], p = a[i] 数组元素的地址是通过数组首地址计算的。如数组的首地址是 1000,则第i 个元素的地址是1000 + i * 每个数组元素所占的空间长度 指针与数组 在C++中,指针和数组关系密切,几乎可以互换使用 数组名可以看成是常量指针,对一维数组来说,数组名是数组的起始地址,也就是第0个元素的地址 如执行了p=array,则p与array是等价的,对该指针可以进行任何有关数组下标的操作 指针运算 指针+1表示数组中指针指向元素的下一元素地址; 指针-1表示数组中指针指向元素的上一元素地址; 合法的指针操作:p + k, p - k, p1 - p2 数组元素的指针表示 当把数组名,如 intarray,赋给了一个同类指针intp 后,intarray 的元素可以通过intp访问。第i个元素的地址可表示为 intp + i,第i个元素的值可表示为 *(intp + i)。 通过指针访问数组时,下标有效范围由程序员自己检查。 如输出数组 a 的十个元素 指针和数组的区别 虽然通过指针可以访问数组,但两者本质是不同的。 在定义数组时为数组的各个元素分配了全部的存储区,而在定义指针时,仅仅分配四个字节的存储区存放指针地址。只有把一个数组名付给了对应的指针后,指针才能当作数组使用 如有:int array[5], *intp; 第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针 动态分配 在C++语言中,每个程序需要用到几个变量,在写程序前就
您可能关注的文档
- 第6章零件图.ppt
- 名师面对面金华地区2017中考语文第4部分作文第三十二讲选材__积累写作素材让内容充实复习.ppt
- 名著阅读——西游记练习附答案.doc
- 名师面对面金华地区2017中考语文第4部分作文第三十讲审题__抓住关键信息让目的明确复习.ppt
- 第6讲05铸件合金.ppt
- 第6节_使用“资源管理器”管理文件、文件夹.ppt
- 名著阅读《西游记》练习题(含答案).doc
- 名人传.pptx
- 第6讲冲压性能控制.ppt
- 第6章酸碱滴定法.ppt
- 骗取贷款、票据承兑、金融票证罪的深度剖析与司法实践研究.docx
- 角色清晰度、情绪稳定性与新护士入职适应的关系探究:理论、实证与策略.docx
- 利用影响力受贿罪的疑难问题探究.docx
- 房地产市场宏观调控与制度建设的协同发展路径.docx
- 揭秘血管紧张素Ⅱ刺激人足细胞表达血管内皮生长因子的信号通路:机制与影响.docx
- 抗甲状腺药物联合左旋甲状腺素治疗Graves病:疗效、机制与展望.docx
- 完善食品安全法配套立法制度研究:现状、问题与路径.docx
- 辣椒红(黄)色素介导水溶液中百菌清光化学降解的机制与效应探究.docx
- 三维培养对间充质干细胞体外免疫抑制作用的重塑与机制探究.docx
- 探秘广西少数民族基因密码:10个民族Y染色体17个STR基因座的遗传多态性剖析.docx
最近下载
- 鲁科版小学英语四年级下册单词默写表.pdf VIP
- 16J914-1 公用建筑卫生间.docx VIP
- 2025-2026学年广东省深圳市宝安区八年级(上)期末历史试卷(含答案).docx
- 四川省加油(气)站安全生产标准化所需资料清单.pdf VIP
- 2026年浙江高考1月首考英语应用文课件.pptx
- 电子学会等级考试三级真题.docx VIP
- 2025年湖南大众传媒职业技术学院单招笔试综合素质试题库含答案解析.docx VIP
- 一种货叉矫正装置及方法.pdf VIP
- 2025年湖南大众传媒职业技术学院单招笔试综合素质试题库含答案解析.docx VIP
- 2025年度民主生活会领导干部个人发言提纲三篇.docx VIP
原创力文档

文档评论(0)