C语言关键字static作用

本文主要介绍关键字static的作用。它可声明静态变量和函数,有三个主要作用:限制变量和函数的作用域,增加安全性;改变变量和函数的存储域;定义未赋值时初始化值为0。还说明了其对局部变量、全局变量和局部函数的使用方法及效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字static作用
static–声明静态变量、函数。static有三个主要作用。
1.限制了变量、函数的作用域。
2.改变了变量、函数的存储域。
3.定义未赋值时,初始化值为0。

static可以对局部变量、全局变量、局部函数使用。定义方法,比如

//static.c文件中
#include<stdio.h>
static int a = 0;  //定义静态全局变量
static int a_a;   //定义静态全局变量,未赋值
void static_test()
{
	static int b = 0;  //定义静态局部变量
	int c = 0; //定义局部变量
	static int b_b; //定义静态局部变量,未赋值
	a++;
	b++;
	c++;
	printf("a=%d,a_a:%d,b=%d,b_b:%d,c=%d\n",a,a_a,b,b_b,c);
	return;
}
static void static_test1()   //定义静态局部函数
{
	printf("static test !!!\n");
	return;
}
int main()
{
	int i = 0;
	static_test1();
	for(i=0;i<6;i++)
	{
		static_test();
	}
	return 0;
}

@限制了变量、函数的使用域。
如上代码所示,静态全局变量a只能作用于static.c文件中,比如在另外一个文件static_tmp.c将不能使用。
静态局部变量b只能作用于static_test()函数中,比如在static_test1() 中将不能使用。
静态局部函数static_test1() 只能作用于static.c,比如在另外一个文件static_tmp.c将不能使用。
这样做可以增加安全性,也可以避免在其它源文件中、函数中引起错误。

@.改变了变量、函数的存储域。
程序的函数的参数值、局部变量存在于(栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。
static全局变量,存储域没改变。
static局部变量,存储域被设置在了静态区中。
static函数,存储域被设置在了静态区中。

@定义未赋值时,初始化值为0。
static全局变量,只初使化一次,防止在其他文件单元中被引用。
static局部变量,只被初始化一次,下一次依据上一次结果值。
static函数,在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
如上代码所示,运行结果:

static test !!!
a=1,a_a:0,b=1,b_b:0,c=1
a=2,a_a:0,b=2,b_b:0,c=1
a=3,a_a:0,b=3,b_b:0,c=1
a=4,a_a:0,b=4,b_b:0,c=1
a=5,a_a:0,b=5,b_b:0,c=1
a=6,a_a:0,b=6,b_b:0,c=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值