static关键字

目录

一、为什么会有static关键字?

1、有关多文件中的声明文件.h

2、头文件中的重复包含问题

3、函数不声明可以在其他源文件使用吗?

4.static关键字的诞生

二、static关键字的用法详解

1.static用法

2.相关图解


一、为什么会有static关键字?

1、有关多文件中的声明文件.h

为什么会诞生.h头文件?

在用C语言写大型项目时,一定会同时创建许多个源文件来共同实现整个项目,但我们知道不同源文件中定义的全局变量,在其他文件里面是不能使用的,需要先使用extern关键字进行变量的声明才能使用,但是这些大量的源文件之间的“互交”可以说是大量的,频繁的,那么我们就需要在每一个源文件中都声明一遍吗?而且“互交”使用的全局变量可能是非常多的,这无疑是增加了代码的编写效率,降低了代码的维护性。为了解决这种声明问题,就诞生了.h头文件,将所有的声明都放在头文件中,最后只需要包含一个头文件就可以解决所有的声明。

extern:声明全局变量时不能设置初始化值,声明时必须带上,(虽然不带extern也可以),但如果不带上语法上分析是定义而不是声明。

函数声明也可以带上extern,建议带上(好习惯)

2、头文件中的重复包含问题

如果多次包含同一个头文件,可能会出现重复包含的情况,代码就会做无用的复制,会降低代码的效率。

解决方法一:直接加上#pragma once

解决办法二:条件编译

3、函数不声明可以在其他源文件使用吗?

答案是可以的。

虽然编译器会出现函数未定义的告警,但仍然可以使用这个函数,但是为什么呢?

我们需要知道,函数是在什么时候被使用的。在进程进行编译时,编译器会发现这个源文件里面没有这个函数的定义,这时编译器就会出现告警,在进程进行连接时,编译器将所有的文件连接在一起,这时在其他文件里定义的函数就相当于在同一个文件中了,所以仍然可以被使用。

4.static关键字的诞生

在编写一个程序时,我们会为使用者提供一些接口,调用这些接口来实现各种各样的功能,但是在一些必要的函数或者全局变量,我们是不希望暴露在使用者的面前的,这会使我们代码的“秘密”暴露,而这些“秘密”我们是不希望别人知道的,而static关键字就可以解决这个问题。

无疑可以有利于项目的维护,和提供代码的安全保证。

二、static关键字的用法详解

1.static用法

修饰的全局变量或者函数,只能在本文件直接访问,或被其他文件间接访问。使暴露的接口尽可能的减少。

是一套项目维护,提供安全保证的机制。

限制的是函数或全局变量作用域。

可以修饰局部变量:更改局部变量的生命周期,临时变量->全局生命周期,不改变作用域

static修饰临时变量后,就被放着全局数据区。

2.相关图解

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绅士·永

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

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

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

打赏作者

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

抵扣说明:

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

余额充值