函数里的和函数外的static变量有什么区别

[复制链接]
查看11 | 回复2 | 2017-9-9 13:26:09 | 显示全部楼层 |阅读模式
首先说一下什么是静态变量(常量也是一样的道理),你可以这么理解,不管哪声明的静态变量,其实都可以当作全局变量,但和普通的全局变量不同的是该静态变量只能在其声明的作用域中使用,出了这个作用域就不能用了。那么你的问题也就出来了,在函数内声明的静态变量其实就是一个全局变量,只不过它只能在函数内部用;在函数外声明的,有两种,一种是类中的成员(C++的概念,既然你问c这里就不赘述了),另外一种就是文件作用域的静态变量,有文件作用域的静态变量只能在包含它的.c文件中使用,如果是声明在头文件中的静态变量,那么在不同的.c文件包含它的时候,会各自生成一个独立的副本,也就是说每个包含它的.c文件中的该变量其实是互不相干的;而有文件作用域的静态变量和在当前.c文件下全...
回复

使用道具 举报

千问 | 2017-9-9 13:26:09 | 显示全部楼层
区别就是静态变量只有第一次运行函数的时候被创建,并且在函数结束的时候不会消亡;而普通的成员在函数结束的时候就会在内存中退栈消亡。//Ex_1.cvoid fun_1 (){
static int a = 0;
a ++;
printf ("%d", a);}void fun_2 (int time...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行