C语言:static

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

有关static的二三事(c语言)


`

一、static是什么

static是c语言提供的32个关键字之一。它可以用于修饰函数,变量。
于函数而言,其可以改变函数的链接属性,使其只能在本文件中使用,不能被其它文件直接使用。
与变量而言,它可以改变全局变量的作用域,改变局部变量的生命周期。

1.static修饰函数

static未修饰

#include <stdio.h>

void function();

int main()
{
	function();
	return 0;
}//test.c文件
#include <stdio.h>

void function()
{
	printf("hallo world\n");
}//add.c文件

其结果可以正常打印出
在这里插入图片描述
static修饰
用static修饰的结果为
在这里插入图片描述
其错误原因为
在这里插入图片描述
其中LNK为链接问题。所以被static修饰的函数不能在其他文件直接调用,但可以在自身文件中调用
如下:
在这里插入图片描述
那么如何在其它文件中间接调用被static修饰的函数
如下:
在这里插入图片描述
再上图中我们在add.c文件中通过函数fun来嵌套函数function,在test.c文件中调用函数fun来间接调用函数function。这样就可以间接调用被static修饰的函数

所以static也可以称为c语言中的安全保障。

static修饰变量

  1. 对于全局变量
    static未修饰
    如下:
    在这里插入图片描述
    static修饰
    如下:
    在这里插入图片描述

在这里插入图片描述
所以被static修饰全局变量就不能在除本文件外的文件中使用,改变了其作用域。

  1. 对于局部变量
    static未修饰
    如下:
    在这里插入图片描述

static修饰
如下:
同一个变量定义只能进行一次。
在这里插入图片描述
我们都知道局部变量的生命周期是随函数的调用而开始,函数的返回而结束。但被static修饰的局部变量其生命周期被改变成全局变量。
如下:
在这里插入图片描述
原因如下:
在这里插入图片描述


总结

以上就是关于static用于修饰函数和变量的个人观点。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水月梦镜花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值