C语言之语法歌
整型浮点加数组,结构共用与枚举。
算术关系逻辑布,顺序条件共循环。
函数复用力无穷,指针威力与天通。
静态有无内外链,自动动态栈堆间。
字符流淌输入出,文件永存信息笺。
变量存储类别
变量存储类别关系大型程序的多文件组织问题,非常关键。
- 静态变量:存储在全局数据区,程序运行期间一直存在。包括外部链接静态变量(在所有函数外声明的文件变量,其他文件可通过extern引用)、内部链接静态变量(在所有函数外声明的文件变量,static修饰,不能被其他文件引用)、无链接静态变量(在函数内声明的局部变量,static修饰)。
- 自动变量:在函数内声明的局部变量,无static修饰,函数运行结束自动释放内存,又称为栈变量。
- 堆变量:采用malloc动态申请内存的变量,又称堆变量,需手动释放内存。
- 常数:包括字符串字面量、用const修饰的全局变量,存在与常量区。
字符串存储位置
变量存储类别关系大型程序的多文件组织问题,非常关键。
- 静态变量:存储在全局数据区,程序运行期间一直存在。包括外部链接静态变量(在所有函数外声明的文件变量,其他文件可通过extern引用)、内部链接静态变量(在所有函数外声明的文件变量,static修饰,不能被其他文件引用)、无链接静态变量(在函数内声明的局部变量,static修饰)。
- 自动变量:在函数内声明的局部变量,无static修饰,函数运行结束自动释放内存,又称为栈变量。
- 堆变量:采用malloc动态申请内存的变量,又称堆变量,需手动释放内存。
- 常数:包括字符串字面量、用const修饰的全局变量,存在与常量区。
指针与数组
- 指针名和数组名均返回数据首元素地址。
- sizeof()用于数组名时,返回数组所有元素大小之和,应用于指针名,仅返回指针本身所占的内存大小。
- 指针加减一整数,表示移动了多少个变量所占内存大小的单元。