您的位置:首页 > 其它

变量类型总结

2019-04-03 11:27 32 查看

内存存储区分为:程序区,静态存储区,动态存储区
静态存储区主要存储:全局变量和静态变量
动态存储区主要存储:1.形参。2.局部变量。3.保护现场和返回地址。
static静态局部变量,是在编译时赋初值,如果不指定初值则为0,而自动变量(局部变量)不赋初值为不确定的数。
static静态外部变量,定义在全局变量位置,特点是只能本文件使用,其他文件不能extern。
总结:

  • 作用域

    全局变量 外部变量(作用在当前位置以下的函数,允许其他文件引用)
  • 静态外部变量(作用在当前位置以下的函数,只能本文件引用)
  • 局部变量
      自动变量(只作用在本函数,函数创建时赋值,函数结束值消失)
    • 寄存器变量(只作用在本函数,函数创建时赋值,函数结束值消失)
    • 静态局部变量(只作用在本函数,编译时创建,函数结束值保留)
    • 形参(可以为自动变量或寄存器变量(存在CPU寄存器中))
  • 生命周期和存储位置分类

      动态变量(调用函数时临时分配存储空间) 自动变量
    • 寄存器变量
    • 形参
  • 静态变量(程序编译时创建,整个程序运行期间都存在)
      静态局部变量(函数内有效)
    • 静态外部变量(本文件有效)
    • 外部变量

    注意编译时赋初值,是指编译时计划好了变量内存分配方案,而不是将变量存储在内存当中,编译只是起到检查语法错误等编译错误的过程。

    顺便总结一下其他知识点:
    内部函数是只能被本文件调用的函数,用static修饰。
    #include “在用户目录查找” <在系统目录下查找>

    数据类型及存储空间

    数据类型 16位 32位 64位
    char 1 1 1
    short 2 2 2
    int 2 4 4
    unsigned int 2 4 4
    float 4 4 4
    double 8 8 8
    long 4 4 8
    unsigned long 4 4 8
    long long 8 8 8
    *指针 2 4 8

    struct所占的存储空间:
    总体上遵循两个原则:
    (1)整体空间是占用空间最大的成员(的类型)所占字节数的整数倍。
    (2)数据对齐原则—内存按结构体成员的先后顺序排列,当排到该成员时,其前面已摆放的空间大小必须是该成员类型大小的整数倍,如果不够则补齐,依次向后类推。

    struct  A
    {
    char  a;
    double  b;
    int  c;
    char  d;
    };//占24字节。1+7(第二个原则)+8+4+1+3(第一个原则)
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: