变量的存储类型

来源:互联网 发布:图像处理相关算法 编辑:程序博客网 时间:2024/06/06 02:14

概念

  • 作用域:可以被访问的程序范围,由定义变量语句的位置决定
  • 生存期:变量从分配空间,到使用,最后释放存储空间的时间段,由其存储类型决定
  • 存储类型:自动型(auto)、外部型(extern)、静态型(static)、寄存器型(register)
  • 存储方式
    • 静态:程序运行期间分配固定的存储空间,程序运行结束后才释放,如全局变量
    • 动态:需要使用时才分配存储空间,使用结束后立即释放,如局部变量
  • 程序运行时使用的存储空间
    • 程序代码区:编译后的指令序列
    • 数据静态存储区:全局数据和静态数据
    • 数据动态存储区:
      • 函数数据:返回地址、CPU现场、形参、临时变量
      • 动态内存申请的数据

Tips

  • 使用extern可将全局变量的作用域扩展到其定义之前或其他源程序文件
extern int a; //a的声明,扩充定义域...int a; //定义
  • 外部变量与内部变量同名时,在内部变量的作用域中外部变量被屏蔽
  • 静态局部变量(函数内定义的静态变量),在函数调用结束后仍将保留
  • 静态变量的缺省值为0
  • 可以将频繁使用的局部变量定义为寄存器变量

动态内存分配

  • void* malloc(unsigned int size),函数返回的地址没有表明存储空间的数据类型,必须进行强制类型转换
  • void free(void* p),p为最近一次调用malloc()的返回值
原创粉丝点击