- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[第8章C程序设计第2版
第8章 指针和引用 本章主要内容 8.1 指针和指针变量? 8.2 指 针 运 算? 8.3 指针和数组? 8.4 指针数组和多级指针 8.5 指针和函数 8.6 new和delete运算符 8.7 引用和其他类型的指针? 8.8 简 单 链 表 8.9 类 型 定 义 8.1 指针和指针变量 8.1.1 指针的概念 8.1.2 指针变量的说明 8.1.1 指针的概念 指针:一个变量的地址,一个内存单元的地址。 变量的地址:该变量所占存储单元的首地址。 变量的值:内存单元中的内容。 变量地址的表示:变量名。 :取地址运算符。 指针变量:专门存放变量地址的变量。 8.1.2 指针变量的说明 指针变量与其他类型的变量一样,必须先说明后使用,说明指针变量的一般格式为: 《存储类型》<类型>*<变量名1>《,*<变量名2>…=; 其中,存储类型是可任选的;变量名前的星号*指明所说明的变量为指针变量;而类型则指出指针变量所指向的数据类型,即指针所指向的内存单元中存放的数据值的类型。 1. 指针的类型 从语法的角度看,只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。 2. 指针所指向的数据类型 当通过指针来访问指针所指向的内存区域时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 8.2 指 针 运 算 8.2.1 指针的赋值运算 8.2.2 指针的算术运算 8.2.3 指针的关系运算 8.2.1 指针的赋值运算 指针赋值运算常见的形式如下。 (1)将一个变量的地址以运算的结果形式赋给一个同类型的指针。 (2)将另一同类型的指针值赋给某一指针 (3)在C++中可以将0赋给任一指针变量,其含义是初始化指针变量,使其值为“空”。 8.2.2 指针的算术运算 左值所能进行的算术运算有两种:一是指针变量与一个整数的加或减运算;二是自增、自减运算。 1. 与整数的加或减运算 指针加法的计算公式为:如果指针变量的定义为 datatype *p; p初始地址值为DS, 那么p +n = DS +n?sizeof(datatype)。指针加法的单位是指针对应类型的字节数。 2. 指针的自增或自减 指针的自增或自减表示指针从当前位置向后或向前移动sizeof(数据类型)长度的存储单元,指向下一个或上一个元素 8.2.3 指针的关系运算 指针变量可以进行关系运算,两个指针变量的关系运算是根据两个指针变量值的大小(作为无符号整数)来进行比较的,通常只有同类型的指针变量进行比较才有意义。 相等(==)比较的含义是判断两个指针变量是否指向相同的内存单元,即两个指针值是否相同;而不等比较(、、=、=)的含义是判断两个指针变量是否指向不同的内存单元 在C++中,同一个符号可能表示不同的运算符。 编译器是根据运算符的优先级、操作级的类型及个数来区分的。 8.3 指针和数组 8.3.1 指针与一维数组 8.3.2 指针与多维数组 8.3.3 指针和字符串 8.3.1 指针与一维数组 如图8.3所示,定义一个数组a[10]和一个指针pa。 int a [10], *pa; pa=a; //A pa =a [0]; //B A、B行的效果是一样的,都是把数组的首地址赋给指针。 引用一个数组元素,有3种方法,仍然采用上面的数组和指针: (1)下标法:如a[i]形式。 (2)数组名地址法:如*(a+i)。 (3)指针法:有两种形式。 ①指针地址法。如*(pa+i) ②指针下标法。如pa[i] 8.3.2 指针与多维数组 在C++中,二维数组的各个元素值按行的顺序逐行来存放,编译程序为二维数组分配一片连续的内存空间来依次存放各个元素值。 行数组首地址a,相当于a[0]。 行指针a+i。 行元素a[i] 即为*(a+i),实际为各列数组首地址。 各列数组首地址a[i],相当于a[i][0]。 列元素地址a[i][j],可用a[i]+j或者*(a+i)+j表示。 列元素a[i][j] 即为*(a[i]+j),或者*(*(a+i)+j);这里i=0,1,2;j=0,1,2,3。 图8.4所示为二维数组与指针的关系示意图。 8.3.3 指针和字符串 用字符指针表示字符串有3种方法: (1)指向字符数组,让字符指针与存放字符串的字符数组关联,就可以用字符指针表示该字符串。 (2)直接定义指针并初始化,让它指向指定的字符串。 (
您可能关注的文档
- l劳动经济课后思考题整理.doc
- I中国传统孝文化的历史变迁.doc
- l勘察基础期末复习简答题.docx
- I中国传统政治文化的现代化发展.doc
- I中国传统文化320题.doc
- l勾股定理典型解题技巧及练习.doc
- I中国传统文化csl.doc
- l包你会过的答案基础会计职业技能实训平台电大版1.doc
- I中国传统文化在现代的价值文献综述.docx
- I中国传统文化对中国特色社会主义文化建设的意义.docx
- 2025年中国锻铁围栏市场调查研究报告.docx
- 2025年中国椭圆型市场调查研究报告.docx
- 2025年中国无蔗糖原味豆浆市场调查研究报告.docx
- 2025-2031年中国泛在电力物联网行业发展运行现状及投资潜力预测报告.docx
- 2025年中国制袋机零件市场调查研究报告.docx
- 2025年中国智能除垢型电子水处理仪市场调查研究报告.docx
- 2025-2031年中国甘肃省乡村旅游行业市场深度研究及投资策略研究报告.docx
- 2025-2031年中国干海产品行业市场发展监测及投资战略规划报告.docx
- 2025年中国全铝图解易拉盖市场调查研究报告.docx
- 2025年中国人造毛皮服装市场调查研究报告.docx
文档评论(0)