MyException - 我的异常网
当前位置:我的异常网» VC/MFC » c++中 static是什么意思?该如何解决

c++中 static是什么意思?该如何解决

www.MyException.Cn  网友分享于:2013-01-29  浏览:46次
c++中 static是什么意思?
首先我知道他是静态的.很多地方用到static但是我不知道有什么作用.


------解决方案--------------------
登录对话框中的用户名就是用static的。
还可以用static扩展出一些漂亮的装饰界面。
------解决方案--------------------
直接抄百度上的:

static的作用是将变量设置为静态变量,一般使用在某个函数里。
比如
void fun()
{
static int a ;
……
}
那么第一次调用该函数后,下次再调用的时候a还保持了上次的值。

------解决方案--------------------
static静态文本控件
static 有时希望函数中的局部变量的值在调用之后不消失而保留原值,占用的内存单元不释放,在下一次调用的时候使用!
例如 在MFC控件中有些值的高度或者宽度希望杯保留下次用到就用这个!
C/C++ code

static CRect rectlarge;
   static CRect rectsmall;
CRect rectseparator;//
       GetWindowRect(&rectlarge);//得到控件的坐标
       GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectseparator);
       rectsmall.left=rectlarge.left;//各个值
       rectsmall.top=rectlarge.top;
       rectsmall.right=rectlarge.right;
       rectsmall.bottom=rectseparator.bottom;

------解决方案--------------------
静态全局变量有以下特点:
  该变量在全局数据区分配内存;
  未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);
  静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
上面是复制的。
比如一个函数中定义int i;那么变量i 只能在该函数内起作用,而在函数外部调用i则出现错误,
如果在定义成static 变量,则在整个主函数中都是起作用的。
------解决方案--------------------
探讨
还是不明白 因为很多情况下 定义变量前面用static 这是为什么呢?

------解决方案--------------------
静态变量!
是个变量,但值不会发生变化。
------解决方案--------------------
你就认为是个局部的全局变量。
------解决方案--------------------
C++中,static关键字限制的对象(变量),实体被存放在程序的数据段(data segment)。static也可用来修饰函数,表明该函数仅在编译单元内允许引用。详释如下:
1. 修饰对象(变量)。
要理解这一点,我们需要理解C++中两类对象,一类是POD(Plain Old Data),这类对象主要指C中继承下来的一些类别,比如内建内别或者结构体等,一个共同的特点是这类类别没有构造析构函数。另一类就是具有构造析构函数的对象(呜。。此处尚有何时产生默认构造析构,何时忽略浅构造(trivial constructor/destructor)等,此处不再讨论)。
无论如何,这类变量一般存在在如下地方:
1. 文件内全局变量。表明对该变量的引用只在文件内有效。(当然,通过一个指针,指向该变量,然后导出指针,其他源文件还是可以对进行变量操作,这是一个曲折的方式。其实很好理解,编译器只是阻止对其名称的外部引用,但是无论如何变量地址在全局范围内是有效的。这如同const保持常量的修饰特点一致)。
2. 函数内全局变量。表明该变量只在函数内引用有效。多次调用该函数时,上次调用的结果依旧保持。从C走过来的程序员,认为函数内静态变量是编译器初始化的,即使执行期初始化,也只初始化一次,因此对多次调用的效率没有影响。呜,这个很令大家遗憾。如下:
C/C++ code

        int func()
        {
          static FILE *pF = fopen("test.file", "wb+");
          // ... operator pF ...
        }

------解决方案--------------------
static 变量存储在静态存储区.建议楼主看看static的详细说明.

------解决方案--------------------
When modifying a variable, the static keyword specifies that the variable has static duration (it is allocated when the program begins and deallocated when the program ends) and initializes it to 0 unless another value is specified. When modifying a variable or function at file scope, the static keyword specifies that the variable or function has internal linkage (its name is not visible from outside the file in which it is declared).

A variable declared static in a function retains its state between calls to that function.

When modifying a data member in a class declaration, the static keyword specifies that one copy of the member is shared by all instances of the class. When modifying a member function in a class declaration, the static keyword specifies that the function accesses only static members.

Static data members of classes must be initialized at file scope.

In recursive code, a static object or variable is guaranteed to have the same state in different instances of a block of code.

文章评论

老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员都该阅读的书
程序员都该阅读的书
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
编程语言是女人
编程语言是女人
鲜为人知的编程真相
鲜为人知的编程真相
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我是如何打败拖延症的
我是如何打败拖延症的
程序员的鄙视链
程序员的鄙视链
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何成为一名黑客
如何成为一名黑客
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员和编码员之间的区别
程序员和编码员之间的区别
一个程序员的时间管理
一个程序员的时间管理
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
总结2014中国互联网十大段子
总结2014中国互联网十大段子
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老程序员的下场
老程序员的下场
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员必看的十大电影
程序员必看的十大电影
10个调试和排错的小建议
10个调试和排错的小建议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
 程序员的样子
程序员的样子
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
代码女神横空出世
代码女神横空出世
漫画:程序员的工作
漫画:程序员的工作
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有