Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > static关键字
【标  题】:static关键字
【关键字】:static
【来  源】:http://blog.chinaunix.net/article.php?articleId=43883&blogId=8556

static关键字

Your Ad Here

C和C++根本就不是一回事;从设计之初就不该用相近的语法;

一边试验一边记录

在C和C++中,static类型变量存储位置一致,都放在程序的全局存储区中;

//----------------------------------------------------------------------------------------------------------------

C里边就两种情况而已;

一是静态全局变量,作用域仅限于变量被定义的文件中,其他文件用extern声明没法使用它;

   准确地说作用域是从定义之处开始,到文件结尾结束;在定义只处前面的那些程序行也不能使用它;

   想要使用就得在前面再加extern ***;比较变态,直接在文件顶端定义不就得了;

二是静态局部变量,在函数体里面定义的,就只能在这个函数里用了,同一个文件中的其他函数也用不了;

  void funcx(){

      static long dwvalue;  //这个值就只能在这个函数里面用了,函数退出了,值还留在里面;

                                    // 函数下次被调用的时候里面的值还是上次退出时的,就这么点用处;

                                    //再有就是如果静态局部变量如果带有初始赋值,如下:

      static long rlvalue = 78;    //这个赋值其实是在编译的时候进行的,这个值在整个程序运行期间只会初始化一次,

                                            //并不会在每次函数运行时赋一次值;

  }

//-----------------------------------------------------------------------------------------------------------------

C++:

关于静态全局变量和静态局部变量是和C相同的;

static的成员函数和成员变量就不一样了,完全是外部的;

为什么涅?好像我是这么理解的,本来定义个类就是为了复用,你让人家在别的模块里用不了,那算什么!?

所以就用呗;

ClassName::Value  , ClassName::Function()  这样很常见吧;

类的static数据成员,只是声明了在那占个空;编译器不对类内部静态数据成员分配空间;

你要用的话还得自己去声明一个全局静态变量;

静态数据成员不论public\protected\private的都可以用ClassName::Name访问;

class CA{

public:

     static long value; //这是骗人的,编译的时候不给它分配空间;

     static void  fun();

private:

     static long value1;   //这个私有的除了用 CA::value1以外就只能用成员函数和友元函数访问了

};

long CA::value;    //必须自己声明一个,否则连接时出错;

static CA ao;    //可以定义个静态对象,这个对象可以在其他模块用extern 声明,然后调用它的这个value,用其他的会连接错误;

void func(){

static CA ai;   //这个和外面那个一样,也只能在其他模块用来做static成员的作用域分辨;

}

修复环境变量:【上一篇】
问题??:【下一篇】
【相关文章】
  • static 和 const的解释
  • C++ 类的静态成员(static)
  • 8.7.10 Static constructors
  • 如何改变STATIC控件的文字颜色
  • [收藏]C++ Tips(11)--static的使用
  • TStaticTextEx & TDBStaticTextEx 组件
  • 理解static
  • 跟我一起学习制作用于报警功能的STATIC类
  • CCheckStatic类
  • 利用static实现表格的颜色隔行显示
  • 【随机文章】
  • WebSphere中流行数据库连接池的配置
  • Maya 4.0的新增功能
  • job debug method
  • [转] Linux 下字体显示原理的一个较详细的解释
  • 没有CONSOLE的场合,能重新激活已结束的QINTER子系统吗?
  • 友好的页面“确认对话框”
  • D3DX8指南01_CreateDevice
  • Xen虚拟机中固定Guest OS的网卡的Mac地址
  • discuz5.0安装详解
  • oracle 数据库备份与恢复
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.