C++的存储连续性、作用域和连接性

一、c++11中的数据存储持续性

1.自动存储持续性:在函数定义中声明的变量,包括函数参数。

2.静态存储持续性:在函数外定义的变量和用关键字static定义的变量。作用域:程序整个运行过程中。

                               ①外部链接性  ②外部链接性 ③无链接性

3.线程存储持续性:使用关键字thread_local 声明的。

4.动态存储持续性:使用new 分配的内存将一直存在直到delete将其释放为止。

二、作用域和链接性

1.作用域(scope):描述名称在文件的多大范围可见。

2.链接性(linkage):描述名称如何在不同单元间共享。

  链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。自动变量没有连接性。

三、静态持续变量

     int global=10;      //external linkage

    static int one_file=5;  //internal linkage

   void function()

    {

     static int count=0;     //no linkage

    }

1.count变量(静态局部变量):没有链接性,作用域为局部,只能在函数内部使用。函数执行前count已经在内存中开辟空间。

2.global变量(外部变量或者全局变量):外部链接性,持续性为静态,作用域为整个文件,可以在程序的其他文件中使用。

3.one_file变量(静态全局变量):内部链接性,作用域为整个文件,只能在当前文件中使用。

静态变量的特点:未被初始化的静态变量的所有位都被设置为0,叫做零初始化(zero-initialized)。

四、静态持续性、外部链接性(全局变量):在代码块外部声明,在其他文件中使用时要使用extern声明

链接性为外部的变量称为外部变量,存储持续性为静态,作用域为整个文件。在每个使用外部变量的文件中必须声明它,遵循单定义规则。

1.定义声明(definiing declaration ):给变量分配存储空间。

  例如 int number=10;

  或者等效于 extern int number=10;

2.引用声明(referencing declaration):不分配存储空间,引用已有的变量。使用关键字extern 修饰,不进行初始化。

   例如 extern int number;


五、静态持续性、内部链接性(静态全局变量):使用static在代码块外部定义


六、静态持续性,无链接性(静态局部变量):使用static 在代码块中定义的变量。

     静态局部变量的特点是只在程序启动时初始化一次,以后再调用函数时不再初始化。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值