一、存储模型
1、变量:是对程序中数据的存储空间的抽象
存储期:变量在内存中的保存时间
作用域:程序的那些部分通过变量名来使用变量
链接点:程序的那些部分通过变量名来使用变量
2、生命周期与作用域
局部变量:
生命周期:从定义开始,到该模块结束
作用域:该模块内
static修饰的局部变量:
生命周期:从定义开始,到程序结束
作用域:该模块内
全局变量:
生命周期:从定义开始,到程序结束
作用域:整个程序
static修饰的全局变量:
生命周期:从定义开始,到程序结束
作用域:本文件内
3、变量存储类型

二、内存管理
1、malloc/free
malloc与free是配对使用的,free只能释放堆空间。如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间
2、条件编译
编译器根据条件的真假决定是否编译相关的代码
(1)根据宏是否定义
#ifdef <macro>
……
#else
……
#endif
(2)根据宏的值
#if <macro>
……
#else
……
#endif
三、Make简介
1、make:工程管理器(自动编译管理器)
“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作
2、自动变量
$< 第一个依赖文件的名称
$@ 目标文件的完整名称
$^ 所有不重复的目标依赖文件,以空格分开
export:可以将总控的makefile的变量传递下一级的makefile
1、变量:是对程序中数据的存储空间的抽象
存储期:变量在内存中的保存时间
作用域:程序的那些部分通过变量名来使用变量
链接点:程序的那些部分通过变量名来使用变量
2、生命周期与作用域
局部变量:
生命周期:从定义开始,到该模块结束
作用域:该模块内
static修饰的局部变量:
生命周期:从定义开始,到程序结束
作用域:该模块内
全局变量:
生命周期:从定义开始,到程序结束
作用域:整个程序
static修饰的全局变量:
生命周期:从定义开始,到程序结束
作用域:本文件内
3、变量存储类型
二、内存管理
1、malloc/free
malloc与free是配对使用的,free只能释放堆空间。如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间
2、条件编译
编译器根据条件的真假决定是否编译相关的代码
(1)根据宏是否定义
#ifdef <macro>
……
#else
……
#endif
(2)根据宏的值
#if <macro>
……
#else
……
#endif
三、Make简介
1、make:工程管理器(自动编译管理器)
“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作
2、自动变量
$< 第一个依赖文件的名称
$@ 目标文件的完整名称
$^ 所有不重复的目标依赖文件,以空格分开
export:可以将总控的makefile的变量传递下一级的makefile