static这个函数这个函数在C语言中是什么意思,有哪些运用?
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 03:00:16
![static这个函数这个函数在C语言中是什么意思,有哪些运用?](/uploads/image/z/8611867-19-7.jpg?t=static%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%E5%9C%A8C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%2C%E6%9C%89%E5%93%AA%E4%BA%9B%E8%BF%90%E7%94%A8%3F)
static这个函数这个函数在C语言中是什么意思,有哪些运用?
static这个函数
这个函数在C语言中是什么意思,有哪些运用?
static这个函数这个函数在C语言中是什么意思,有哪些运用?
static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性
static 声明的变量在C语言中有两方面的特征:
1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值.这一点是它与堆栈变量和堆变量的区别.
2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见.这一点是它与全局变量的区别.
2、问题:Static的理解
关于static变量,请选择下面所有说法正确的内容:
A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
D、静态全局变量过大,可那会导致堆栈溢出.
答案与分析:
对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的.
对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述).
对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的.
因此,答案是A、B、C.
3、问题:不可重入函数
曾经设计过如下一个函数,在代码检视的时候被提醒有bug,因为这个函数是不可重入的,为什么?
unsigned int sum_int( unsigned int base )
{
unsigned int index;
static unsigned int sum = 0; // 注意,是static类型的.
for (index = 1; index