static用法

1、不允许对函数形参用static修饰,因为形参是要存入栈中,而static修饰的是存入静态存储区——数据段或BBS段中的

如:

void add(int a,int b,static int result);
int main(void)
{
int a = 5,b = 7;
static int result1=0;
int result2=0;
add(a,b,result1);
add(a,b,result2);
printf("a+b = %d\n",result1);
}
void add(int a,int b,static int result)
{
result = a+b;
}

结果就会报错:错误: 为形参‘result’指定了存储类

2、static 用于局部变量

则 作用范围不变,仍是局部;但生存期同全局变量,一直生存到进程结束; 而初始化语句仅初始化一次,以后此语句都会被忽略!

3、static 用于全局变量

则 不允许外部文件对其进行外部声明引用;

4、static 用于函数

        则 不允许外部文件对其进行外部声明引用;

例如:
文件1:
#include<stdio.h>
//static int an = 13;//若是将全局变量定义为static , 则外部文件就无法对其进行外部声明引用了
int an = 13;
//static void fun(void)//若是将函数定义为static , 则外部文件就无法对其进行外部声明引用了
void fun(void)
{
printf("xxxxxxx\n");
}
文件2:
#include<stdio.h>
extern int an;
extern void fun(void);

int printf_fun(void){
printf("int the main:\n");
fun();
return 0;
}
int main(void)
{
printf_fun();
printf("%d\n",an);

return 0;
}
输出结果:
int the main:
xxxxxxx
13



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值