一道关于C语言静态变量的题,求解。

刚问老师了,他说是A。
理由:静态全局变量是半全局变量,不是全局变量。还训了我一顿:上课没好好听!?
对于这种变态的题,我只想说:去你丫的!

static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性static 声明的变量在C语言中有两方面的特征:1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
=> A B C正确
静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。追问

那C呢?

追答

设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-13
ABC
静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。追问

那C呢?

追答

全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
所以需要注意生存周期

追问

生存周期?有效范围?时间?空间?

追答

有效范围

第2个回答  2014-01-13
A和B
C,全局变量不需要考虑生存周期,因为生存周期和系统运行时间相同
D,静态全局变量存放在静态内存区,不存放在动态的栈空间,不会导致栈溢出,使用过大的局部变量倒是有可能导致栈溢出
第3个回答  2014-01-13
琢磨了一下,只有D是错误的。C是在玩文字游戏:它们都是全寿命的,当然要考虑啊!哈哈……
第4个回答  2014-01-13
ABC
前三个都对 是多选题吗追问

那C呢?

相似回答