首页 > 代码库 > 存储类、链接和内存管理

存储类、链接和内存管理

关键字:

  auto、extern、static、register、const、volatile、restricted、

函数:

  rand()、srand()、time()、malloc()、calloc()、free()、

 

不同的存储类提供了变量的作用域(scope)、链接(linkage)以及存储时期(storage duration)的不同组合

变量的作用域和链接一起表明程序的哪些部分可以通过变量名来使用该变量

 

作用域:一个C变量的作用域可以是代码块作用域、函数原型作用域、或者文件作用域。

函数原型作用域是从变量定义处一直到原型声明的末尾。参数名称通常是无关紧要的,编译器所关心的只是参数的类型。

名字起作用的一种情形是变长数组参量:
  void use_a_VLA (int m, int n, int arr[m][n]);

 

链接:一个C变量具有下列链接之一:外部链接(external linkage)、内部链接(internal linkage)、空链接(no linkage)

具有代码块作用域或者函数原型作用域的变量有空链接,意味着它们是由其定义所在的代码块或函数原型所私有的。具有文件作用域的变量可能有内部或者外部链接。一个具有外部链接的变量可以在一个多文件程序的任何地方使用。一个具有内部链接的变量可以在一个文件的任何地方使用

int giants = 5;        // 文件作用域, 外部链接

static int dodgers = 3;    // 文件作用域, 内部链接

 

存储类、链接和内存管理