static与const的区别?又有什么联系?

作者&投稿:汗宽 (若有异议请与网页底部的电邮联系)
static const和const static的区别~

对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

const 、static都是限定词

const 表示所修饰的对象不能被改变
static 分几中情况。

1。限定定义类成员时表明该成员是所有该类对象共享的,只有一个,而不属于某个特定的对象。所以要这样引用 classname::varname;

2。限定非类成员的变量时,只定义一次,忽略重复的定义。相当于全局变量,


const static 与 static const 相同,意义就是把2者结合起来理解

static是初学者经常搞错的概念之一,static定义的变量在程序初始化的时候会初始化在静态数据区,程序运行期间完全不变,是指这个区域不变,而内容是可以改变的。换句话说,static只是指定将其存储在静态存储区。不同于一般变量,一般变量在运行时候由程序分配内存,而静态变量编译的时候就将分配内存,比如你的问题中,a将被赋值为3,然后,如果你在程序中写a=a+1;a就会变成4,静态变量和一般变量唯一的不同就是整个程序运行期间都将存在。她所在的内存不会被释放。

这一点跟const关键字不一样,const关键字定义的是只读变量,一经赋值,再也不能改变了。但是const也是初学者经常搞错的概念之一,const代表只读变量,而不是常量,常量通常是用enum或者宏来定义的~

然后其实static主要的作用并不是来定义什么静态变量什么的,况且他也做不到这点。static最重要的作用是控制元素的作用域。被static的变量或者方法,将是只有本文件可见的!

打个比方:
我有两个文件 a.c和b.c,其中a.c中是这样的:
int _a = 1; // 这是一个全局变量
void fun() // 这是一个全局函数

{
...

}

这时候在b.c中是可以调用_a和fun()的,但是如果我加入了在_a或者fun()之前加入了static,那么两者均只能在a.c中被调用。

楼主可能会问,这有什么好处呢?
好处主要是两种:
1)不同文件的全文件变量或者函数可以采用同样的变量/函数名,方便编程,static起到了隔离文件的作用。
2)有些变量你想让他作为一个长期变量/函数,但是又不想让他成为全局变量/函数,static就有用了,因为static变量/函数跟全局变量/函数在初始化时同样是开辟在静态区的。

另外,值得注意的一点是,当初设计static的时候,因为变量将被储存在静态区域,因为副作用,初始值将全部置0x00,这一点被很多程序猿利用来对字节进行置0初值操作哦~

static是静态变量,用于在函数中持续记录数据,比如记录函数被调用的次数
const是常量型的,其值是只读的,不允许修改内容
区别:一个可以修改值,一个不允许修改值
联系:都是可以使用的“变量”


请告诉我一些关于纸张分类的常识和基本种类
开数与开本的概念 通常把一张按国家标准分切好的平板原纸称为全开纸。在以不浪费纸张、便于印刷和装订生产作业为前提下,把全开纸裁切成面积相等的若干小张称之为多少开数;将它们装订成册,则称为多少开本。对一本书的正文而言,开数与开本的涵义相同,但以其封面和插页用纸的开数来说,因其面积不同...

谁能告诉我有关塑料的知识?
条件与过程描述:纯度99%以上的乙烯在催化剂四氯化钛和一氯二乙基铝存在下,在压力0.1-0.5MPa和温度65-75℃的汽油中聚合得到HDPE的淤浆。经醇解破坏残余的催化剂、中和、水洗,并回收汽油和未聚合的乙烯,经干燥、造粒得到产品。 参考资料: http:\/\/knology.chinaccm.com\/phrase-2006011117485100125.html 已赞过 已踩...

一个选择题,最佳者追加50
1、linguistic competence: Comsky defines competence as the ideal user’s knowledge of the rules of his language,and performance the actual ...Constituents that can be substituted for one another without loss of grammaticality belong to the same syntatic category.[可以相互替换而又不改变语法...

MPG是什么格式?
MPEG-4技术包含两个主要部分:视听对象的编码工具集和描述编码工具和编码对象的句法语言(syntatic language)。从技术的观点看,与传统编码标准最显著的不同是:接收者可以下载用于表示视听信息的语法描述,并且具有很快被VLSI(超大规模集成)技术所支持的特征。MPEG-4是一个正在制定的国际标准,它支持用于通信...

简要说一下牵张反射的原理!
这是百科上的 http:\/\/baike.baidu.com\/view\/530641.htm?fr=ala0_1_1牵张反射( stretch reflex myotatic reflex )指肌肉在外力或自身的其它肌肉收缩的作用下而受到牵拉时,由于本身的感受器受到刺激,诱发同一肌肉产生收缩的一类反射。有神经支配的骨骼肌,如受到外力牵拉使其伸长时,能引起受牵拉...

mpeg是什么的简称
相对分子量高的产品适用于唇膏、除臭棒、香皂、剔须皂、粉底和美容化妆品等。在清洗剂中,也用做悬浮剂和增稠剂。在制药工业中,用作油膏、乳剂、软膏、洗剂和栓剂的基质。也有将本品与丙烯酸反应,做成MPEG丙烯酸酸酯,是制备聚羧酸盐高效水泥减水剂的主要原材料。百科:http:\/\/baike.baidu.com\/view\/...

请问哪位专家知道线性低密度聚乙烯与聚丙烯有什么不同?
按甲基排列位置分为等规聚丙烯(isotaeticPolyProlene)、无规聚丙烯(atacticPolyPropylene)和间规聚丙烯(syndiotaticPolyPropylene)三种。甲基排列在分子主链的同一侧称等规聚丙烯;若甲基无秩序的排列在分子主链的两侧称无规聚丙烯;当甲基交替排列在分子主链的两侧称间规聚丙烯。一般生产的聚丙烯树脂中,等规结构的含量为95%...

天宁区13734469066: const和static const的区别 -
荣邵诺合: const和static const的区别: 一、全局的区别const规定变量在全局中是只读的变量,并且它的值无法被修改.static const规定变量在当前的模块中是只读的变量,无法再全局中被其他模块读取. 二、文件的区别 const定义的指针,不赋初值...

天宁区13734469066: const与static的区别是什么? -
荣邵诺合: const 是常量, 也就是只读的, 是一个"右值" 比如 const int iRet = 2 ; iRet = 3 ; // 这句是错的, const类型只能在初始化的时候赋值, 之后不能改变 static称为静态变量, static有两种, 一种是在类的成员变量中, 一种是局部变量或全局变量....

天宁区13734469066: const与static有什么区别 -
荣邵诺合: static 是c++中非常常用的修饰符,他被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全方面分析static 修饰符的实质.static 的两大作用:一、控制存储方式:static被引入以告知编译器,将变量存储在...

天宁区13734469066: static const和const static的区别 -
荣邵诺合: 对于C/C++语言来讲, const就是只读的意思,只在声明中使用; static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放; 对于全局变量,...

天宁区13734469066: c#中const和static的区别分别是什么 -
荣邵诺合: const是常量,不可变的值.static是静态修饰符,表示这个成员不是某个单独对象所有,而是对象所属的类所有的.static变量是可变的,通过类名.成员名来访问.static除了修饰变量,还可以修饰属性、方法、类等.如满意,请及时采纳,谢谢.

天宁区13734469066: c#中static和const有什么区别? -
荣邵诺合: static 是静态的修饰符,const是定义常量的修饰符; const就是只读的意思,只在声明中使用; static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储...

天宁区13734469066: 在c# 中static 和const的区别 -
荣邵诺合: static为静态修饰符,可以放在对象前面(函数也是一种对象)如:class Example{ public static void show(){ Console.WriteLine("这是一个静态方法"); } } 可直接Example.show();去调用这个方法而不用实例化 当然也可以定义静态的属性...

天宁区13734469066: c++ const static和static const有什么区别? -
荣邵诺合: const 、static都是限定词const 表示所修饰的对象不能被改变static 分几中情况. 1.限定定义类成员时表明该成员是所有该类对象共享的,只有一个,而不属于某个特定的对象.所以要这样引用 classname::varname; 2.限定非类成员的变量时,只定义一次,忽略重复的定义.相当于全局变量,const static 与 static const 相同,意义就是把2者结合起来理解

天宁区13734469066: c++ const和static有什么区别? -
荣邵诺合: 系统不知道怎么回事,我接着hanwt139继续补充.static的作用是把一个变量(这里的变量和上面说的概念一样, 都是泛指)设置为“静态”. 一般情况下,我们在子程序中定义的变量,在这个子程序运行 结束的时候都会被销毁,其值就丢失了. 如果用了static,则这个变量的值在子程序结束后依然被保留 .这个变量是否被销毁我不知道,但其值肯定被保留了.当你下次 运行该子程序时,该变量初始就为你最后一次调用子程序后该变量 的值. 但是,要注意,他和全局变量还是有区别的.在其他子程序中该 变量不能被使用.

天宁区13734469066: c#中static和const有什么区别
荣邵诺合: static 是静态的修饰符,const是定义常量的修饰符.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网