C语言static篇
变量
#include<stdio.h> void func() { int a = 0; printf("%d\t", a); static int b; printf("%d\n", b); } int main() { func(); return 0; }
#include<stdio.h> void func() { int a = 1; printf("%d\t", a++); static int b=1; printf("%d\n", b++); } int main() { for(int i=0;i<5;i++) func(); return 0; }
以上两个代码程序,说明以下几点内容:
1、缺省状态下变量默认修饰符为auto,static修饰的变量自动初始化为零、
2、static修饰的变量只会初始化一次,可以看到b变量只被赋值过一次为一后就不再初始化
3、而与其相对的auto修饰的变量,则是即用即开,用完就销,数据存储在栈上
4、static修饰的变量则存储在data段
实际上,static修饰的变量还具有以下几点作用:
1、首先是static可以起隐藏作用,普通的全局变量具有全局可见性,可以在不同的源文件中被调用,但是全局变量一旦被
static修饰,那么其仅能对本源文件可见
2、另外,被static修饰的全局变量也允许其他源文件命名相同的全局变量
函数
在函数的返回类型前加上static,就是静态函数。其特性如下:
-
静态函数只能在声明它的文件中可见,其他文件不能引用该函数
-
不同的文件可以使用相同名字的静态函数,互不影响
非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明
标签:函数,int,C语言,static,printf,修饰,变量 From: https://www.cnblogs.com/alexlance/p/17441516.html