0
点赞
收藏
分享

微信扫一扫

入门C语言之关键字之static

玩物励志老乐 2022-04-14 阅读 76
c语言

在C语言中,static是用来修饰变量和函数的,可以修饰局部变量全局变量和函数。

我们来讲讲这三种用法:

1.修饰局部变量

这是当前的代码,一个while循环

void test()
{
  //修饰局部变量
	int a = 1;
	a++;
	printf("%d ", a);
}

int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}

	return 0;
}

输出结果为:

 当我们在 int a前加上static的时候

void test()
{
  //修饰局部变量
	static int a = 1;
	a++;
	printf("%d ", a);
}

int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}

	return 0;
}

输出结果为:

结果大有不同,当函数中的变量a被static修饰了之后,它的生命周期就被改变了。所以当static修饰局部变量的时候,局部变量除了作用域是不销毁的。本质上,static修饰了局部变量的时候,也是改变了变量的存储位置的。

 本来存放在栈区的局部变量被static修饰之后,它就不会放在栈区了,而是放在了静态区中,只有当程序执行结束之后,被static修饰的的局部变量才会销毁。

2.修饰全局变量

 现在我可以利用extern 调用外部变量 g_val(extern不懂可以参考主页框架文章)

//修饰全局变量

/声明外部符号
extern int g_val;

int main()
{
	printf("%d\n", g_val);

	return 0;
}

 当我们把这个全局变量加上static的时候,我们就无法调用它了。

static int g_val = 2022;

说明了什么呢?

全局变量本是拥有外部链接属性的,当被static修饰之后, 这个时候这个全局变量的外部链接属性就变成了内部链接属性,其他源文件无法调用。这就是static修饰全局变量的作用。

3.修饰函数

修饰函数也非常简单,一个函数本来也是具有外部链接属性的,但是被static修饰的时候外部链接属性就变成了内部链接属性,其他源文件就无法使用。

举报

相关推荐

0 条评论