1. 具有外联接的全局变量:
在所有函数外部声明的变量,且没有static修饰符,例如:
/* a.c 文件 */
int total = 0;
此类变量具有文件作用域,在本文件中从定义开始处至文件结尾均可见。在本文件的开始至定义此变量处及其他文件中,可使用extern修饰符来引用该变量。
例如:
/* b.c文件 */
extern int total;
进行上述声明后,可在b.c中使用total变量
2. 具有内连接的全局变量:
在所有函数外部声明的变量,且有static修饰符,例如:
/* a.c文件 */
static int total;
此类变量具有文件作用域,只能在本文件中使用,从声明变量处开始,至文件结尾均可见。
3. 自动变量:
在代码块中定义的变量,例如:
int main(void)
{
…
int total;
…
}
此类变量具有代码块作用域,从声明变量处开始,至代码块结束均可见。
4. 具有静态存储周期的自动变量:
在代码块中定义的变量,且有static修饰符,例如:
int main(void)
{
…
static int total;
…
}
此类变量同样具有代码块作用域,从声明变量处开始,至代码块结束均可见。
5. 寄存器变量:
在代码块中定义的变量,且有register修饰符,例如:
int main(void)
{
…
register int total;
…
}
此类变量同样具有代码块作用域,从声明变量处开始,至代码块结束均可见。