C存储类

  存储类定义C程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:

  auto

  register

  static

  extern

 

  auto存储类

  auto存储类是所有局部变量默认的存储类。

{
    int mount;
    auto int month;
}

  上面的实例定义了两个带相同存储类的变量,auto只能用在函数内,即auto只能修饰局部变量。

  

  register存储类

  register存储类用于定义存储在寄存器中而不是RAM中的局部变量。这意味着变量的自大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的‘&’运算符(因为它们没有内存位置)。

  

{
    register int miles;
}

  

  static存储类

  static存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。一次,使用static修饰局部变量可以在函数调用之间保持局部变量的值。

  static修饰符也可以应用与全局变量。当static修饰全局变量时,会使变量的作用域限制在声明它的文件内。

  全局声明的一个static变量或方法可以被人和函数或方法调用,只要这些方法出现在跟static变量或方法同一个文件中。

  

#include <stdio.h>
/*函数声明*/
void func1(void); /*全局变量 - static时默认的 */
int main()
{
   while (count --){
     func1();
    }
    return 0;
}
void func1(void)
{
  /* 'thingy' 时 ‘func1’的局部变量 - 只初始化一次
  * 每次调用函数 ‘func1’  'thingy' 只不会被重置。
  */
  static int thingy = 5;
  thingy++;
  printf("thingy 为%d, count 为 %d\n",thingy,count);  

}

  extern存储类

  extern存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当使用extern时,对于无法初始话的变量,会发变量指向一个之前定义过的存储位置。

 

上一篇:Matlab调用其他文件夹下的函数


下一篇:python try异常处理之traceback准确定位哪一行出问题