用于修饰全局变量、局部变量和函数。
全局变量和局部变量简解:http://t.csdn.cn/gywDj
1、修饰全局变量
对于整个工程,也就是多个源文件时;因为全局变量具有外部链接属性。
在一个工程里,在A源文件里定义的全局变量,在B源文件里可以通过extern使用,但是如果这个全局变量被static修饰,则外部链接属性会变成内部链接属性。
static修饰会把外部链接属性变成内部链接属性,使全局变量作用域变小
2、局部变量
局部变量存储在栈区,进入作用域创建,出作用域销毁;但是在被static修饰之后,就存储在了静态区,而存储在静态区的变量,则是到程序结束才释放。但本质上,static修饰只是改变了存储位置,因为存储位置差异,执行效果不同。
static会改变局部变量的存储位置,并且使它生命周期延长,但不会改变它的作用域。
#include<stdio.h> void swap() { static int d = 3; d=5+d; printf("%d\n",d); //第一次调用时 得d==8;由于static修饰 并且并未销毁 //第二次调用时,此时d的值为8,所以经过d=5+d;输出13 } int main() { int a = 10; swap(); //第一次调用 swap();//第二次调用 }
3、修饰函数
在修饰全局变量时,描述了全局变量具有外部链接属性,但同样函数也具有外部链接属性;在static的修饰下,也会变成内部链接属性。
修饰全局变量和修饰函数上有一定的相似度
c语言小知识:
栈区 | 局部变量 |
函数参数 | |
堆区 | malloc |
calloc | |
realloc | |
free | |
静态区 | 静态变量 |
全局变量 |
创作不易,路过的帅哥美女,动动小手,点点赞咯,蟹蟹啦
若文章有问题,请指出,虚心接受批评