- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C語言嵌入式系统编程修炼之零基础知识
C语言嵌入式系统编程修炼之零: 基础知识
????本节专门对第二节曾讲述过的指针作一详述。并介绍C语言新的数据类型: 结构、联合和枚举。 枚举是一个被命名为整型常数的集合。最后对类型说明(typedef)和预处理指令作一阐述。
指针(point)
??? 学习C语言, 如果你不能用指针编写有效、正确和灵活的程序,? 可以认为你没有学好C语言。指针、地址、数组及其相互关系是C语言中最有特色的部 分。规范地使用指针, 可以使程序达到简单明了, 因此, 我们不但要学会如何正 确地使用指针, 而且要学会在各种情况下正确地使用指针变量。
1. 指针和地址 1.1 指针基本概念及其指针变量的定义 1.1.1 指针变量的定义 ??? 我们知道变量在计算机内是占有一块存贮区域的, 变量的值就存放在这块区 域之中, 在计算机内部, 通过访问或修改这块区域的内容来访问或修改相应的变 量。Turbo C语言中, 对于变量的访问形式之一, 就是先求出变量的地址,? 然后 再通过地址对它进行访问, 这就是这里所要论述的指针及其指针变量。所谓变量的指针, 实际上指变量的地址。变量的地址虽然在形式上好象类似 于整数, 但在概念上不同于以前介绍过的整数, 它属于一种新的数据类型, 即指 针类型。Turbo C中, 一般用指针来指明这样一个表达式x的类型,? 而用 地 址作为它的值, 也就是说, 若x为一整型变量, 则表达式x的类型是指向整数的 指针, 而它的值是变量x的地址。同样, 若
double d;
则d的类型是指向以精度数d的指针, 而d的值是双精度变量d的地址。所以, 指 针和地址是用来叙述一个对象的两个方面。虽然x、d的值分别是整型变量x 和 双精度变量d的地址, 但x、d的类型是不同的, 一个是指向整型变量x的指针,而另一个则是指向双精度变量d的指针。在习惯上,? 很多情况下指针和地址这两个术语混用了。 ??? 我们可以用下述方法来定义一个指针类型的变量。 ???? int *ip; 首先说明了它是一指针类型的变量, 注意在定义中不要漏写符号*,? 否则它为 一般的整型变量了。另外, 在定义中的int 表示该指针变量为指向整型数的指针 类型的变量, 有时也可称ip为指向整数的指针。ip是一个变量, 它专门存放整型 变量的地址。 ??? 指针变量的一般定义为: ????类型标识符? *标识符; ??? 其中标识符是指针变量的名字, 标识符前加了*号,? 表示该变量是指针变 量, 而最前面的类型标识符表示该指针变量所指向的变量的类型。一个指针变 量只能指向同一种类型的变量, 也就是讲, 我们不能定义一个指针变量, 既能指 向一整型变量又能指向双精度变量。 ??? 指针变量在定义中允许带初始化项。如: ????? int i, *ip=i; 注意, 这里是用i对ip初始化, 而不是对*ip初始化。和一般变量一样,? 对于外 部或静态指针变量在定义中若不带初始化项, 指针变量被初始化为NULL, 它的值 为0。Turbo C中规定, 当指针值为零时, 指针不指向任何有效数据, 有时也称指 针为空指针。因此, 当调用一个要返回指针的函数(第五节中介绍)时, 常使用返 回值为NULL来指示函数调用中某些错误情况的发生。 1.1.2 指针变量的引用 ??? 既然在指针变量中只能存放地址, 因此, 在使用中不要将一个整数赋给一指 针变量。下面的赋值是不合法的: ???? int *ip; ???? ip=100; 假设 ???? int i=200, x; ???? int *ip; 我们定义了两个整型变量i, x, 还定义了一个指向整型数的指针变量ip。i, x中 可存放整数, 而ip中只能存放整型变量的地址。我们可以把i的地址赋给ip: ???? ip=i; 此时指针变量ip指向整型变量i, 假设变量i的地址为1800, 这个赋值可形象理解为下图所示的联系。 ??????????? ip?????????????? i ??????? ┏━━━┓?????? ┏━━━┓ ??????? ┃ 1800 ─——→┃ 200 ┃ ??????? ┗━━━┛?????? ┗━━━┛ ??????????? 图1. 给指针变量赋值 以后我们便可以通过指针变量ip间接访问变量i, 例如: ???? x=*ip; 运算符*访问以ip为地址的存贮区域, 而ip中存放的是变量i的地址, 因此, *ip 访问的是地址为1800的存贮区域(因为是整数, 实际上是从1800开始的两个字节), 它就是i所占用的存贮区域, 所以上面的赋值表达式等价于 ???? x=i; ??? 另外, 指针变量和一般变量一样,
您可能关注的文档
- CPU光刻技術分析与展望.doc
- CPU及其風扇的安装与拆卸.doc
- CPU及主板技術参数详解.doc
- CPU的結构和原理.doc
- CQC標志管理办法.doc
- Creo2.0詳细安装教程.doc
- CRM在中小企業中的应用研究.doc
- Criticalreasoning分類总结方法.docx
- CRM銷售业务管理系统的设计与实现(新品)(JSPMySQL).doc
- CRPG-WI-108571系列成品測试作业指导书.doc
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
文档评论(0)