提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
文章目录
前言
一、what is static?
二、how to use static?
1.修饰局部变量
3.修饰全局变量:
4.修饰函数
static 修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。初始化的时候自动初始化为 0。
5.数据安全性
总结!!!
静态变量与普通变量
2, 静态局部变量有以下特点:
在我们学习c语言的过程中,相信大家都遇到过static,那么这到底是个啥玩意,到底怎么用,用起来有什么麻烦的地方?您先别急,且听我细细道来!!
提示:以下是本篇文章正文内容,下面案例可供参考
static在c语言中是类似for,break,continue的关键字,较为常见
here are three examples:
static修饰局部变量会使局部变量成为静态局部变量,静态局部变量和普通局部变量又有何不同?
不多bb,看代码:
主:
#include
int main()
{
for(int i=0;i<3;i++)
{
www();
}
return 0;
}
头文件:
void www()
{
int i=0;
i++;
printf("%d",i);
}
当此时,我们会打印出如下情况
然而我们让代码稍加改变,加上今天的主角static,那么结果会截然不同:
总结:
1)第一个为什么打印了三个1:
i作为局部变量在www函数中被定义,所以i的生命周期只会存在在函数www中,当调用函数www时i被定义生成,当函数结束时,则生命周期结束,函数销毁,在下一次创建时,将会重新创建新的i。
2} 第二个为什么会打印连续整数:
static修饰局部变量之后,将i的生命周期转变为全局变量的生命周期,因此,在每一次调用这个函数的时候www函数结束,但是变量i并没有被完全释放,在下一次调用函数www时,对i也不重新定义和初始化,降延续上一次结束时i的值,所以自然上述函数将打印连续不断的整数
当static修饰全局变量之后,会将原本储存在静态存储区的全局变量变成静态全局变量,当此时,static不得在其他文件中使用,此时,你可以把它当成本文件的私有变量!!!
考虑到数据安全性(当程序想要使用全局变量的时候应该先考虑使用 static)
1.静态全局变量有以下特点:
优点:静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突。
(1)全局变量和全局静态变量的区别
一般程序把新产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。