/*
** 作用域 存储类型 备注
*/
int a = 5; // external static
extern int b; // external static 其实缺省为"extern"
static int c; // internal static external的加上“static”变为internal
int d (int e) // d: external static 函数都是static存储 e:局部作用域,函数内部 auto 函数调用时创建,执行完消失
{
int f = 15; // 不具有链接属性 auto 局部变量
register int b; // 不具有链接属性 auto 其值初始化为“垃圾”
static int g = 20; // 不具有链接属性 static 在函数执行前g 就被创建并赋值为20了
extern int a; // external static 这句声明其实没有必要
...
{
int e; // 不具有链接属性 auto 覆盖形参的e
int a; // 不具有链接属性 auto 覆盖第一行的a
extern int h; // external static 可以引用其他源文件的h;与上面的extern int a不同,这里必须extern声明
...
}
...
{
int x; // 不具有链接属性 auto 与上个代码段的e不是一个值,且覆盖形参e
int e; // 不具有链接属性 auto
...
}
...
}
static int i() // internal static 函数d()也没办法引用函数i(),其作用域为本行至文件结尾
{
...
}
...