一个关于static关键字的小问题
程序如下:
- C/C++ code
#include <stdio.h>int fun(void){ static int count = 10; return count--;}int count = 1;int main(void){ printf("global\t\tlocal static\n"); for(; count <= 10; ++count) printf("%d\t\t%d\n", count, fun()); return 0;}执行结果如下:
global local static
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
问题如下:
1、程序编译结束,在运行之前,fun函数中的静态变量count已经初始化结束,那么静态存储区中静态局部变量count的初始值是0还是10,解释原因,thx
2、每次运行fun函数,事实证明count不会被赋值,那么为什么它不会被重复赋值,解释之,thx
3、全局变量和静态变量都是放在静态存储区中,此程序中两个变量count是如何被区分的,内核寻找这两个变量的时候是怎么加以辨别的,请解释之,thx
[解决办法]
1 10 语言规定
2 语言规定
3 作用域不同,编译器自己知道那个对应哪个。
[解决办法]