zoukankan      html  css  js  c++  java
  • C变量存储

    今天写C的变量怎么在电脑中存储的

    存储类

    存储模型:由3块组成。作用域,链接,存储时期。

    存储模型可以赋给一个变量,这个变量就有了这3块的不同组合。

    先讲3个概念,作用域,链接,存储时期

    作用域:

    C有3种作用域:代码块作用域,函数原型作用域,文件作用域。

    函数内:一个函数内的变量(包括形参)作用域为函数的代码块内部,外面看不见。

    函数外:函数块外部的变量是文件作用域的,在文件中都可见。

    另外,if,while,for这些也一样,变量的作用域在代码块的内部。

    链接:

    C变量有下面3种链接之一。

    空链接:代码块作用域和函数原型作用域(指的就是函数原型括号内的参数)的变量是空链接,不会链接到其他地方,是属于代码块私有的

    文件作用域的变量(也就是定义在函数外的变量)可以是内部链接或外部链接

    内部链接:可以在多文件程序中使用的文件作用域的变量 如static int =3

    外部链接:可以在一个文件程序中使用的文件作用域的变量如 int=3

    存储时期:

    C变量有以下2种变量之一。

    静态存储时期:变量在程序执行期间一直存在,变量必须先定义。如不定义就直接试用会报错。

    自动存储时期:变量是代码块作用域的

    下面是存储类的说明符

    auto:变量有自动存储时期。

    register:用在代码块作用域的变量,存储更快。但是不能获得该变量的地址,而且register int x这样的声明不一定有用,因为寄存器数量有限,有可能没有了

    static:用在代码块作用域的变量声明时,该变量有静态存储时期。用在文件作用域变量前面时,表示是内部链接

    extern:表示声明一个已经在别处定义了的变量。

    定义和声明

    上代码看区别把

    int a=1;
    main(){
        extern int a;
    }

    这里变量a声明了2次,第一个是开辟内存空间,是定义变量,也叫声明定义

    第二次是使用之前的变量a,所以这次的声明是引用声明。

    extern表示该声明不是一个定义,因为它指示编译器参考其他地方

    今天就先写这么多把 EOF

  • 相关阅读:
    DRF 配置
    RESTful 设计方法(学习总结用)
    Chrome 开发者工具
    html中注释的php代码被解析
    正则
    局域网域名访问php项目
    jQuery 操作from表单数据序列化
    jQuery操作Table tr td方法
    鼠标焦点在input的某个位置上,点击一个button 在input光标处的增加文字
    858. Mirror Reflection
  • 原文地址:https://www.cnblogs.com/wz0107/p/5343086.html
Copyright © 2011-2022 走看看