关键字static

在C语言中,static是用来修饰变量和函数的,字面含义是“静态”实际上,功能和“静态”两字没有关系!

变量的作用域(scope):变量在哪些代码中能用(变量的可用范围)。
变量的生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

修饰局部变量-静态局部变量:

改变了这个变量的生命周期,生命周期跟随整个程序,不改变作用域

void print()
{
	int num = 1;    
	printf("num = %d\n", num);
	num++;
}
int main()
{   print();
	print();
	print();
	return 0;
}

运行结果:
num =1
num =1
num =1

加static修饰

void print()
{
	static int num = 1;    //修饰一个局部变量
	printf("num = %d\n", num);
	num++;
}
int main()
{   print();
	print();
	print();
	//printf("num = %d\n", num); //编译出错(num未声明的标识符)
	return 0;
}

运行结果:
num =1
num =2
num =3

修饰全局变量-静态全局变量

改变了变量的作用域,使其只能在当前文件中使用,不影响其生命周期

新建一个源文件

//text.c
//c中的函数或变量使用之前要现有声明/定义
//其中extern可以省略
//声明语句不能进行初始化这样的操作
extern int global;
int main()
{  
	printf("global = %d\n", global);
	return 0}

运行结果:
global = 10

加static修饰
加static修饰

extern int global;
int main()
{  
	printf("global = %d\n", global);//无法运行
	return 0}

报错

链接错误:只看见了变量/函数的声明,没有在其他文件中找到对应的定义

修饰函数-静态函数

和修饰全局变量相同,改变了函数的作用域,使其只能在当前文件中使用,不影响其生命周期

在这里插入图片描述

//extern int add(int, int);  //函数声明时,形参名可以不写
extern int add(int x, int y);
int main(){
	printf("%d\n",add(10,20));
	return 0;
}

结果:
30

加static修饰
在这里插入图片描述

extern int add(int x, int y);
int main(){
	printf("%d\n",add(10,20));
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值