static静态是什么概念?
作者:百变鹏仔日期:2023-07-19 20:53:12浏览:9分类:文字大全
静态变量与静态函数2007-04-09 22:15 在函数或者变量前面加上static修饰符号,以便把函数或者变量在类内或者文件范围内共享,那么我们把这种函数和变量叫静态函数和静态变量。说白了,静态变量的生存期是整个程序,然而其作用域没什么变化,与动态变量的作用域是一样的,虽然静态变量在作用域外存在,但不可调用;它可以保证下次调用该函数时值保持不变,不会再次被初始化。
首先介绍静态成员函数和静态成员变量,他们是用来记录类的信息而不是对象的信息,创建对象时不会创建该变量的空间。二者既可以由对象调用又可以通过类来调用。具体而言又有如下特征:
1) 静态变量受public,protected ,private限制,这同普通变量一样,也就是如果静态变量是protected或者private类型的,在类外不能访问,比如
A::i是错误的
这条规则同样适用于静态函数
2) 静态变量在类内声明,而必须在类外初始化,模版类中应用也是这样。这里我们在static后面加上const类型,可以直接初始化。比如
Class A
{
// Static int I = 5; // error
Static const int I = 5; // ok
Int m_list[I];
}
而这里I的应用也无非是Int m_list[I];
3) 静态成员函数没有this指针。因此,不能声明为const函数。另外,成员数据变量在成员函数内是通过this指针来访问的,因此静态成员函数不能访问任何非静态成员变量。
静态局部变量属于静态存储方式,它具有以下特点:
1) 静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
2) 静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
3) 允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。
4) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
例题如下:
main()
{
int i;
void f(); /*函数说明*/
for(i=1;i
鹏仔 微信 15129739599百科狗 baikegou.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
- 上一篇:已经是第一篇了
- 下一篇:已经是最后一篇了
猜你还喜欢
- 05-15 不管都是怎么造句?
- 05-15 nomore怎么造句?
- 05-15 勇士造句怎么写作业的视频?
- 05-15 这个怎么造句啊?
- 05-15 看的多音字组词 看的释义
- 05-15 刑组词是
- 05-15 媚能组什么词
- 05-15 歪的组词拼音
- 05-15 让组词有哪些
- 05-15 “沸”的多音字分别怎么组词?
- 05-15 “柱”组词有哪些词语?
- 05-15 未字加偏旁可构成哪些字
- 搜索