静态变量Static的用法与区别

static有两种用法:
1、在文件中定义;
如 a.c
static int flag;
void func()
{
//...
}
在这种情况下,主要的作用是说明flag是a.c的私有变量,不在a.c这个文件的其它函数不能访问flag.
2.在函数定义
这主要是说明变量是在堆中定义,如
void func()
{
static int flag;
//...
}
这样的话,函数的值可以反复的被func引用(其它函数也可以使用flag)。
由于flag是在堆中定义的,所以如果传出它的地址,如:
int * func()
{
static int flag;
//...
return &flag;
}
main()
{
int *pi=func();
*pi=1;

}
这样也是可以的,但不推荐。
全局变量也没什么好说的,注意如果全局变量和你的局部变量重名的时候,
函数使用变量名满足近邻原则。
如:

int flag; // in some head file
extern int flag; //in a.c
void func()
{
int flag; //1
flag=1;
if(flag)这个flag用的是 //1处定义的flag
//...

}


Static 变量是静态局部变量,虽然在被调用后他的值依然不便但是其他函数不能引用它,而全局变量是所有函数都可以调用的。
另外;static的全局变量只能在该文件中使用,就算其它文件用extern来声明也
不能用,而没用static定义的全局变量在外部文件中可以通过extern来声明引用它



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值