代码段、全局(静态)变量区、栈、堆

先将内存区化为四个部分,分别保存 代码段、全局(静态)变量区、栈、堆

代码段、全局(静态)变量区、栈、堆

分情况讨论:

全局变量:在函数外面定义的变量

生命周期:程序运行开始创建,程序退出时销毁

作用域:整个文件都可使用(从定义开始到文件结尾)

默认值:0

内存区域:全局(静态)变量区

链接属性:外部的

静态全局变量:

生命周期:程序运行开始创建,程序退出时销毁

作用域:整个文件都可使用(从定义开始到文件结尾)

默认值:0

内存区域:全局(静态)变量区

链接属性:内部的

局部变量:定义在函数内部的变量,包含形参

生命周期:从进入函数时开始创建,函数退出就销毁

作用域:本函数内部有效

默认值:随机值

内存区域:栈

链接属性:无

静态局部变量:(修饰的变量可以被修改( static int a))

生命周期:进入函数时创建,程序退出时才销毁

作用域:函数内

默认值:0

内存区域:全局(静态)变量区

连接属性:无

动态内存:

生命周期:调用动态创建函数创建(malloc、 realloc、 cealloc),调用销毁函数销毁时销毁(free函数)

作用域:无

默认值:无

内存区域:堆

链接属性:无

函数:

头文件:存放对外的函数的声明

源文件:存放对内函数的实现

生命周期:一直存在

作用域:无

默认值:无

内存区域:代码段

链接属性:不加静态关键字外部,加了静态关键字属于内部

注:"<>"与“”之间的区别

"<>"表示系统自带的头文件

“”在项目里先进行查找,找不到后再在标准文件中找

static:静态关键字,主要用于修饰链接属性,使其成为内部的属性