变量具有对应的存储单元,那常量 变量呢,有没有?

2第二章-数据类型、变量和常量学习课件PPT模板下载_PPT免费下载
您的位置:&>&&>&&>& > 2第二章-数据类型、变量和常量学习课件PPT模板
2第二章-数据类型、变量和常量学习课件PPT模板下载
网友评分:
文档大小:3.62 MB
上传时间:07-20
文档大小:5.13 MB
上传时间:08-08
PPT分类Classification
PPT色系: 红色|黄色|蓝色|绿色|粉红色|黑色|紫色|橙色|灰色|棕色|白色|彩色|土豪金色|巧克力色|亮色|浅色
节日PPT:|||情人节|元宵节|38妇女节|植树节|愚人节|清明节|劳动节|母亲节|61儿童节|||七夕节|教师节|中秋节|国庆节|重阳节||||生日祝福|其他节日
PPT课件:||英语|物理|化学|生物|地理|历史||||体育|品德|大学|中学|小学|幼儿园||||
PPT背景:简约背景|淡雅背景|商务背景|艺术背景|风景背景|动物背景|植物背景|卡通背景|爱情背景|节日背景|爱情背景|边框背景|谢谢背景|中国风背景
行业模板:|汽车|教育|经济|金融|房地产|医药|卫生|通信|能源|服务|建筑|交通运输|体育运动|茶|餐饮美食|科技|工业||
主题PPT:|||||论文答辩|党建|年会|晚会||
通用PPT:浪漫爱情|经典模板|古典模板|时尚模板|卡通动漫|自然风景|商务模板|韩国模板|艺术设计|植物模板|动物模板|中国风|现代|酷炫|时尚|潮流|英文关于常量要分配内存的问题
[问题点数:20分,结帖人yangxingmeng]
关于常量要分配内存的问题
[问题点数:20分,结帖人yangxingmeng]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本帖子已过去太久远了,不再提供回复功能。c/c++常见知识点记录(2)
1、&静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。
2、&栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
3、&堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。
static全局变量与普通的全局变量有什么区别:
static全局变量只初使化一次,防止在其他文件单元中被引用;&  
static局部变量和普通局部变量有什么区别:
static局部变量只被初始化一次,下一次依据上一次结果值;
全局变量(外部变量)的说明之前再冠以static&就构成了静态的全局变量。全局变量本身就是静态存储方式,&静态全局变量当然也是静态存储方式。&这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,&当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。&而静态全局变量则限制了其作用域,&即只在定义该变量的源文件内有效,&在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,&因此可以避免在其它源文件中引起错误。&  
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
静态变量的作用域和生命周期
静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。
1. 静态局部变量
在局部变量的说明前再加上static说明符就构成静态局部变量。例如:
static int a,b;&
static float array[5]={1,2,3,4,5};
静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。根据静态局部变量的特点,可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
2.静态全局变量
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。
3、静态函数和静态变量
除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于 Dim 声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。
但可将局部变量定义成静态的,从而保留变量的值。在过程内部用 Static 关键字声明一个或多个变量,其用法和 Dim 语句完全一样:
Static Depth
例如,下面的函数将存储在静态变量 Accumulate 中的以前的运营总值与一个新值相加,以计算运营总值。
Function RunningTotal (num)&
&&& Static ApplesSold&
&&& ApplesSold = ApplesSold + num&
&&& RunningTotal = ApplesSold&
End Function
如果用 Dim 而不用 Static 声明 ApplesSold,则以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。
在模块的声明段声明 ApplesSold,并使它成为模块级变量,由此也会收到同样效果。但是,这种方法一旦改变变量的范围,过程就不再对变量排他性存取。由于其它过程也可以访问和改变变量的值,所以运营总值也许不可靠,代码将更难于维护。
4、声明所有的局部变量为静态变量
为了使过程中所有的局部变量为静态变量,可在过程头的起始处加上 Static 关键字。例如:
Static Function RunningTotal (num)
这就使过程中的所有局部变量都变为静态,无论它们是用 Static、Dim 或 Private 声明的还是隐式声明的。可以将 Static 放在任何 Sub 或 Funtion 过程头的前面,包括事件过程和声明为 Private 的过程。
.bss&& .data段的区别
一个程序本质上都是由&bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但 在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的 问题。
&&& 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。
&&& 比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。
&&& 在《Programming ground up》里对.bss的解释为:There is another section called the .bss. This section is like the data section, except that it doesn’t take up space in the executable.
&&& text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4310次
排名:千里之外
(1)(1)(1)(4)(6)  C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。或者说左值是代表一个内存地址值,并且通过这个内存地址,就可以对内存进行读并且写(主要是能写)操作;这也就是为什么左值可以被赋值的原因了。相对应的还有右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真。简单来说就是,左值相当于地址值,右值相当于数据值。
  比如: int ia,ib;
  ib=0;
  ia=ib;
  在这里,首先定义ia,ib。然后对ib赋值,此时计算机取ib的左值,也就是这个符号代表的内存位置即内存地址值,计算机取0的右值,也就是数值0;然后给ia赋值为ib,此时取ib的右值给ia的左值;
  所以说,ib的左值、右值是根据他的位置来说的;
  这也算是形式语言的一个有意思之处吧。
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:5次
参与编辑人数:4位
最近更新时间: 18:28:12
贡献光荣榜}

我要回帖

更多关于 万有引力常量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信