静态是C语言中非常常见的修饰符,用来控制变量的存储和可见性。
静态声明的变量在C语言中有两个特点:
1)变量将被放置在程序的全局存储区,以便在下一次调用中保留原始赋值。这就是它与堆栈变量和堆变量的区别。
2)变量通过静态告诉编译器,它只在变量的范围内可见。这就是它和全局变量的区别。
2.问题:对静态的理解
关于静态变量,请选择以下所有正确的陈述:
A.如果只在单个C文件中访问全局变量,可以修改为静态全局变量,减少模块之间的耦合;
B.如果全局变量只被单个函数访问,可以改为函数的静态局部变量,降低模块之间的耦合度;
C.当设计和使用访问动态全局变量、静态全局变量和静态局部变量的函数时,应考虑再入;
D.静态全局变量太大,但这将导致堆栈溢出。
回答和分析:
对于A、B:根据本文总论部分对B)的描述,我们知道A和B都是正确的。
c:根据a)的描述在这个概述中,我们知道c是正确的(下面将详细解释所谓的函数再入问题)。
d:静态变量放在程序的全局数据区,而不是在栈中分配,所以不可能造成栈溢出。d错了。
所以,答案是A、B、c。
3.问题:无法重新输入功能。
我曾经设计过下面这个函数,在看代码的时候会想起bug,因为这个函数是不可重入的。为什么呢?
无符号整数sum_int(无符号整数基数)
{
无符号整数索引;
静态无符号int sum=0;//注意,它是静态类型的。
for(index=1;指数