C语言之语法歌

整型浮点加数组,结构共用与枚举。

算术关系逻辑布,顺序条件共循环。

函数复用力无穷,指针威力与天通。

静态有无内外链,自动动态栈堆间。

字符流淌输入出,文件永存信息笺。

变量存储类别

变量存储类别关系大型程序的多文件组织问题,非常关键。

  • 静态变量:存储在全局数据区,程序运行期间一直存在。包括外部链接静态变量(在所有函数外声明的文件变量,其他文件可通过extern引用)、内部链接静态变量(在所有函数外声明的文件变量,static修饰,不能被其他文件引用)、无链接静态变量(在函数内声明的局部变量,static修饰)。
  • 自动变量:在函数内声明的局部变量,无static修饰,函数运行结束自动释放内存,又称为栈变量。
  • 堆变量:采用malloc动态申请内存的变量,又称堆变量,需手动释放内存。
  • 常数:包括字符串字面量、用const修饰的全局变量,存在与常量区。

字符串存储位置

变量存储类别关系大型程序的多文件组织问题,非常关键。

  • 静态变量:存储在全局数据区,程序运行期间一直存在。包括外部链接静态变量(在所有函数外声明的文件变量,其他文件可通过extern引用)、内部链接静态变量(在所有函数外声明的文件变量,static修饰,不能被其他文件引用)、无链接静态变量(在函数内声明的局部变量,static修饰)。
  • 自动变量:在函数内声明的局部变量,无static修饰,函数运行结束自动释放内存,又称为栈变量。
  • 堆变量:采用malloc动态申请内存的变量,又称堆变量,需手动释放内存。
  • 常数:包括字符串字面量、用const修饰的全局变量,存在与常量区。

指针与数组

  • 指针名和数组名均返回数据首元素地址。
  • sizeof()用于数组名时,返回数组所有元素大小之和,应用于指针名,仅返回指针本身所占的内存大小。
  • 指针加减一整数,表示移动了多少个变量所占内存大小的单元。

评论