代码段、全局(静态)变量区、栈、堆
先将内存区化为四个部分,分别保存 代码段、全局(静态)变量区、栈、堆
分情况讨论:
全局变量:在函数外面定义的变量
生命周期:程序运行开始创建,程序退出时销毁
作用域:整个文件都可使用(从定义开始到文件结尾)
默认值:0
内存区域:全局(静态)变量区
链接属性:外部的
静态全局变量:
生命周期:程序运行开始创建,程序退出时销毁
作用域:整个文件都可使用(从定义开始到文件结尾)
默认值:0
内存区域:全局(静态)变量区
链接属性:内部的
局部变量:定义在函数内部的变量,包含形参
生命周期:从进入函数时开始创建,函数退出就销毁
作用域:本函数内部有效
默认值:随机值
内存区域:栈
链接属性:无
静态局部变量:(修饰的变量可以被修改( static int a))
生命周期:进入函数时创建,程序退出时才销毁
作用域:函数内
默认值:0
内存区域:全局(静态)变量区
连接属性:无
动态内存:
生命周期:调用动态创建函数创建(malloc、 realloc、 cealloc),调用销毁函数销毁时销毁(free函数)
作用域:无
默认值:无
内存区域:堆
链接属性:无
函数:
头文件:存放对外的函数的声明
源文件:存放对内函数的实现
生命周期:一直存在
作用域:无
默认值:无
内存区域:代码段
链接属性:不加静态关键字外部,加了静态关键字属于内部
注:"<>"与“”之间的区别
"<>"表示系统自带的头文件
“”在项目里先进行查找,找不到后再在标准文件中找
static:静态关键字,主要用于修饰链接属性,使其成为内部的属性