静态变量可能是内部的或外部的,具体取决于声明的位置。静态变量存储在初始化的数据段中。
内部静态变量: 内部静态变量定义为具有静态变量的变量,这些变量在函数内部声明并延伸到特定函数的末尾。
语法:
main( ) { static datatype variable; // other statements }
示例:
// C program to demonstrate // Internal Static Variables #include <stdio.h> int value(); int main() { printf("%d", value()); return 0; } int value() { static int a = 5; return a; }
输出结果:
5
外部静态变量:外部静态变量是在函数外部声明并为整个文件/程序全局设置的变量。
语法:
static datatype variable; main() { statements } function1() { statements }
示例:
// C program to demonstrate // External Static Variables #include <stdio.h> int add(int, int); static int a = 5; int main() { int c; printf("%d", add(a, c)); } int add(int c, int b) { b = 5; c = a + b; return c; }
运行结果:
10
内部静态变量和外部静态变量的区别:
参数 | 内部静态变量 | 外部静态变量 |
---|---|---|
关键字 | static |
static |
链接 | 内部静态变量没有链接。 | 外部静态变量具有内部链接。 |
声明 | 内部静态变量在主函数中声明 | 外部静态变量在主函数之上声明。 |
比较 | 内部静态变量类似于自动(局部)变量。 | 外部静态变量类似于全局(外部)变量。 |
可见性 | 内部静态变量在特定函数中是活动的(可见性)。 | 外部静态变量在整个程序中都是活动的(可见性)。 |
Lifetime | 内部静态变量在函数结束前是活动的(lifetime)。 | 外部静态变量在整个程序中都是活动的(生命周期)。 |
范围 | 内部静态变量具有块范围的持久存储(仅在特定块或函数内工作)。 | 外部静态变量具有文件范围的永久存储(在整个程序中工作)。 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264519.html