今天带你学会C语言静态变量知识!另外平安夜快乐哦~
静态变量具有即使超出范围也能保留其值的属性!因此,静态变量在其先前的作用域中保留其先前的值,而不会在新的作用域中再次初始化。

句法:
静态数据类型var_name = var_value;
以下是有关C中静态变量的一些有趣事实。
1)程序运行时,静态int变量保留在内存中。当声明了该变量的函数调用结束时,普通或自动变量将被破坏。
例如,我们可以使用static int来计数一个函数被调用的次数,但是自动变量不能用于此目的。
例如下面的程序打印“ 1 2”

输出:1 2
但是下面的程序打印1 1

输出:1 1
2)静态变量是在数据段而不是堆栈段中分配的内存。
3)如果未显式初始化静态变量(如全局变量),则初始化为0。例如,在下面的程序中,x的值打印为0,而y的值则是垃圾。

输出:0 [some_garbage_value]
4)在C语言中,只能使用常量文字初始化静态变量。

请注意,这种情况在C ++中不成立。因此,如果将程序另存为C ++程序,它将编译并运行正常。
5)在C / C ++中,静态全局变量和函数也是可能的。这样做的目的是将变量或函数的范围限制为文件。
6)静态变量不应在结构内部声明。原因是C编译器要求将整个结构元素放在一起(即,结构成员的内存分配应该是连续的)。可以在函数内部声明结构(堆栈段)或动态分配内存(堆段),甚至可以是全局的(BSS或数据段)。无论哪种情况,所有结构成员都应驻留在同一内存段中,因为结构元素的值是通过计算元素相对于结构起始地址的偏移量来获取的。单独将一个成员分离到数据段将破坏静态变量的目的,并且可能使整个结构为静态。
希望对大家有帮助!
另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~
C语言C++编程学习交流圈子,QQ群1090842465【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍分享:

编程学习视频分享:
