- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
零点起飞学C之数据的指代——变量和常量3.1 指代可变的量——变量第1页/共43页变量就是内容可变的量。它是访问和保存数据的媒介,为程序提供了操作数据的方便性。它在程序中的应用非常频繁,只有正确、灵活地使用它才能编写高效的程序。不使用变量的程序也是可以编写出来的,但却不会有什么实用价值。本节就来详细地讲解变量的含义和使用。3.1.1 什么叫变量第2页/共43页要理解什么叫变量,首先要知道数据在计算机上是怎么存放的。当程序运行时,所需的数据要放在内存中才能使用。内存又被格式化成一个个小的存储单元,数据就保存在这些存储单元内。为了访问这些数据,就必须给内存中的存储区域命名,用标识符来标志它。如果该存储区域存放的数据不仅可以读取,还可以被修改和写入,那么该标识符就叫变量。下面将从4个方面来讲解变量的使用。1.变量的定义第3页/共43页变量不仅向编译器宣告变量的存在,而且同时为它分配所需的存储空间。其格式如下所示。第4页/共43页type var1[=value1],var2[=value2],…;其中,type是一个类型名,可以是int、char、struct、union等任何类型说明符,它决定了变量的性质和行为。var1和var2是变量的名字,可以是任何合法的非保留字标识符。中括号表示括号内的内容可选,value1和value2是一个常量值,目的是给var1和var2赋初值。如果同时定义多个变量,则这些变量间必须用逗号“,”隔开。最后一个变量后跟一个分号“;”,因为变量定义也是一条语句。第5页/共43页变量的类型决定了怎么去理解和操作该变量所对应的数据。变量名为程序提供了内存块的首地址和操作它的媒介。下面就来看一下5个变量的定义方式。【示例3-1】第6页/共43页2.变量的声明第7页/共43页如果只是向编译器说明将有一个变量存在,而不为它分配所需的存储空间,就叫变量的声明,它仅起占位符的作用。其格式如下所示:第8页/共43页extern type var1,var2,…;其中,extern是C++的关键字,表示这里定义的变量是“外部”的。外部是指变量要么在另一个文件内,要么在本文件后面某处。总之就是先使用,后定义。用关键字extern声明一下变量,可以避免编译时报告变量不存在的问题。【示例3-2】第9页/共43页使用extern声明一个来自其他文件的变量,以及一个在主函数后才被定义的变量。分析:变量a和b被声明为外部变量。其中,a在头文件中有真正的定义,b则在main()函数的末尾有定义,c则是一个定义。若在变量声明的时候赋了初值,即使有extern保留字,它也表示定义而非声明。第10页/共43页extern int a=1;?警告:如果用extern声明了某个变量,则必须确保这个变量真的存在于其他文件中,并被#include指令包含进来,或真的存在于本文件的后面某处。否则,即使编译时通过,链接时也会报错,提示变量不存在。3.变量的存储位置第11页/共43页变量会依据定义的位置和方式来决定保存数据所需内存空间的位置。如果变量定义在函数体内,且无static修饰,则该变量将从堆栈中得到存储空间。当程序执行进入函数后,才为变量分配存储空间。退出后,自动释放分配的空间。如果变量定义时被static修饰,则无论是在函数体内还是函数体外,都将从全局空间中得到存储空间。如果变量定义在函数体外,则在全局空间中得到存储空间。【示例3-3】第12页/共43页 演示5个变量的定义和存储方式间的关系。分析:变量d1、d2和s1定义在函数体外,所以存储于全局内存中。ch虽然定义在函数体内,但有关键字static修饰,所以也放在全局内存中。s2在函数体内定义又无static修饰,所以将从堆栈中得到存储空间。4.变量蕴含的信息第13页/共43页对于每一个变量,都有两个信息与其相关联。数据值:变量的数据值就是存储在变量对应的存储单元中的数据,也叫“右值”。右值是指被读取的数据,即在赋值运算符的右边,代表的是数据。地址值:变量的地址值就是变量对应的存储单元的首地址,也叫左值。左值是指被写入,即在赋值运算符的左边,代表的是地址。在示例3-3中,变量d1在“d1=3.14;”中是左值,被写入;在语句“d2= d1”中是右值,被读取。在“d1=d1+d2;”中,则同时作为右值和左值。3.1.2 种类第14页/共43页由于程序的各种需求,变量的性质多种多样。1.按变量的作用域来划分第15页/共43页按作用域分,可以将变量分为局部和全局两种。局部变量也叫自动变量,在函数内部或函数参数中定义,存储在堆栈中。它在程序进入函数时才分配空间,退出时就释放。因此,不同的函数内可以有相同名称的局部变量。有时,在函数内部的某个由大括号界定的语句块内也需要定义局部变量,这种局部变量
原创力文档


文档评论(0)