zoukankan      html  css  js  c++  java
  • c语言 作用域、存储期、链接属性汇总

    1、作用域

      块作用域:用{}阔起来的,从声明开始到“}” 结束

           函数作用域:goto(标识符) 的作用域为整个函数。

          函数原型作用域:函数声明开始,函数声明结束而结束

          文件作用域:整个文件或者程序

    2、链接

      无链接:即只在其作用域内可见

          内链接:即在从声明到文件结束都是可见的

          外链接 :多个文件或者整个程序都可见

    3、存储期

          静态存储期:在整个程序都是占有内存的

          线程存储期:thread_local,其声明后会给每个线程分配一个单独的私有备份

         自动存储期:局部变量通常都自动为auto 存储期

         动态存储期:就是用new 或者malloc分配的内存,如果不主动释放,在整个程序都占有内存

    4、总结

         存储类别                 存储期      作用域            链接属性                      表示

         自动                          自动        块                      无链接                     块内声明变量

         寄存器                      自动         块                     无链接                     块内使用register修饰

         静态外链接               静态         文件                  外链接                       所有函数外

        静态内链接                静态        文件                   内链接                       所有函数外,用static修饰

        静态无链接               静态          块                      无链接                      块内,使用static修饰

        线程存储                  自动           线程                  无链接                       thread_local修饰

    4、函数的存储期

      外部函数:默认都是外部函数

          静态函数:使用static 修饰,内连接

          内联函数:inline

    5、注意

    •     auto 在c中表示自动存储期
    •     但是auto在c++11 中表示自动推断类型
    •     register 声明后,并不一定会存到寄存器中,他只是一种请求。及时不存在寄存器中也不能对其取地址。同时可以存为register的类型可不多,

           因为有些类型太大了,寄存器存不下。

    • 静态变量或者全局常量,都存储在静态区,在程序载入时已经执行赋值了 ,他们如果不被初始化,将会被初始化为0,存在bss段中。

    6、申请内存

         malloc:malloc(sizeof(xxx))

         calloc:calloc(num,sizeof(xx))

         realloc: realloc(p,size)

    7、限定符

          volatile

          const:

          restrict:

  • 相关阅读:
    无所不能的Ant 【转】
    fstream的文件操作
    dos下的for命令详解(zz)
    c++中vector的用法总结
    学习Git上
    IE下的document.onclick问题
    第一次面试实习感触
    大数据概述
    红旗
    词法分析
  • 原文地址:https://www.cnblogs.com/tjyuanxi/p/9357652.html
Copyright © 2011-2022 走看看