static 关键字在函数中的使用

来源:互联网 发布:ubuntu 32位库 dpkg 编辑:程序博客网 时间:2024/06/07 02:13

函数中static关键字修饰的变量保存在静态区中,被调用函数销毁该变量的空间依然保留。下面通过具体实例看有无static关键字的区别
案例比较:
1.未加static

#include<stdio>void inc();int main(){    inc();    inc();    inc();    return 0;}void inc(){    int num=1;    printf("%d ",num);    num++;}

运行结果:
1 1 1

2.加static

#include<stdio>void inc();int main(){    inc();    inc();    inc();    return 0;}void inc(){    static int num=1;    printf("%d ",num);    num++;}

运行结果:
1 2 3


简要分析:

区别: 无static关键字时,每调用一次inc()函数时,都重新为num分配了内存空间,所以每一次调用num的初始值为1
有static关键字时,第一次调用inc()函数后,分配了静态的内存空间,之后再调用inc()也使用相同的空间,所以前一次的num++对后面是有效的

注意:inc函数中的静态函数也不能被main函数访问