码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++ static总结

时间:2015-07-01 14:04:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

    前行的路上你是否孤单过,穿梭在这个城市,累了吗,醒了吗,醒了就继续前行吧。

 一、

   1、static的第一个作用是隐藏:当我们要编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。当在全局变量和函数前加上“static”前缀后,就会对其他源文件隐藏。利用这一个特征可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。 

  2、static的第二个作用是默认初始化为0,包括未初始化的全局静态变量与局部静态变量。在C语言中,未初始化的静态变量(全局/局部)放在内存的BSS段,而初始化了的放在内存的数据段。其实,全局变量即使不定义为静态,也是会自动被初始化的;而局部变量则不同----局部变量如果是内置类型则不会被初始化,注意,如果只被初始化了一部分,那么其后面的部分将会被初始化为0;如果变量不是内置类型,则不管其在哪定义,都会自动调用其默认构造函数进行初始化。这样讲也许还不会清楚,来看下面的例子:

#include <iostream>
#include <string>
using namespace std;
static int a; int b; string s1[10]; int main() { static int c; int d;
string s2[10]; return 0; }

  a、b和c被初始化为0;d为函数体内定义的内置类型,元素未被初始化,值不确定; s1和s2为元素类型string的数组,自动调用string类的默认构造函数将各个元素初始化为空字符串;

3、static的第三个作用是保持局部变量内容的持久

     不加static前缀的变量,会跟随函数生存期的结束而结束,但是带有static前缀的变量不会;静态局部变量的生存周期虽然为整个源程序,但其作用域仍与局部变量相同,即只能在定义改变量的函数内使用该变量;

 

二、类中的static的作用

   

3、

C/C++ static总结

标签:

原文地址:http://www.cnblogs.com/nobbyoucanyouup/p/4613014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!