@yiltoncent
2015-03-16T23:01:07.000000Z
字数 1022
阅读 4373
C语言基础
{
和对应结束花括号}
之内的一段代码。传统上,具有代码块作用域的变量都必须在代码块的开始处进行声明。C99放宽了这以规则,允许在一个代码块的任何位置声明变量。你一定见过类似这样的代码:
for(int i=0; i<10; i++)
printf("A C99 feature: i = %d\n",i);
在一些古老的IDE或者编译器上,这样的代码可能编译不通过,主要原因可能就是它不支持C99的新特性。
goto
语句使用的标签(label)。函数作用域意味着一个特定函数中的goto
标签对该函数中任何地方的代码都是可见的,无论该标签出现在哪个代码块中。
int giants=5; // 文件作用域,外部链接
static int dodgers=3; // 文件作用域,内部链接
static
表明链接类型并非存储时期。C使用作用域、链接和存储时期来定义五种存储类:
存储类 | 时期 | 作用域 | 链接 | 声明方式 |
---|---|---|---|---|
自动 | 自动 | 代码块 | 空 | 代码块内 |
寄存器 | 自动 | 代码块 | 空 | 代码块内,使用关键字static |
具有外部链接的静态 | 静态 | 文件 | 外部 | 所有函数之外 |
具有内部链接的静态 | 静态 | 文件 | 内部 | 所有函数之外,使用关键字static |
空连接的静态 | 静态 | 代码块 | 空 | 代码块内,使用关键字static |