读书人

一个关于static关键字的小疑点

发布时间: 2012-04-10 21:03:56 作者: rapoo

一个关于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 作用域不同,编译器自己知道那个对应哪个。
[解决办法]
探讨

to 1L:
全局变量肯定不在栈中

读书人网 >C语言

热点推荐