C语言基础:Static语句的作用

本文详细解释了C语言中static关键字的两种用法:修饰变量时保留其值,以及在函数前限制其可见范围。介绍了静态变量存储在堆区而非栈区的特点,以及带static函数的调用方式区别。
摘要由CSDN通过智能技术生成


前言

在C语言的编程过程中,static语句会经常用到。本文集中讲一下static语句的使用。


一、变量前加static

当使用static语句修饰变量时,变量从普通变量就变成了静态变量。
静态变量是在函数调用退出后,可以保留操作值的。
比如:

void func()
{
	static int x=0;
	int y=0;
	x++;
	y++;
}

每次调用func函数,x的值都会加一,并且是累计的。1,2,3,4… 而y的值不会累计,每次调用结束y的值都是1。
也就是说static语句,跳出了函数局部变量调用结束后就回收的桎梏。可以保留函数的局部变量。

往深了说,普通的函数局部变量保存在栈区,加了static后,变量保存在堆区。每次函数调用完,栈区空间通过帧指针进行回收。而堆区不会回收,所以会保留。

二、函数前加static

函数前面加static是为了限制函数的可见范围。
比如:在func.c源文件中,有如下代码。

static int max_two(int a,int b)
{
	return a>b?a:b;
}
int max_three(int a,int b,int c)
{
	return max_two(a,b)>c?max_two(a,b):c;
}

max_two函数仅限于func.c源代码中使用,无法在别的C源代码文件中使用。而max_three函数就可以在其它的源代码文件中使用。

咱们也深入一下。 不带static的函数,会在编译的obj中间文件中,形成一个符号。通过这个符号,别的源代码文件就可以调用到该函数(前提是有函数的声明).

带static的函数,不会在obj文件中形成符号,所以无法在别的文件中调用。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了static关键字在C语言中的应用,望知晓。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值