第十四章 C语言头文件的编写_C语言static变量和函数

C语言中,static关键字可以限制全局变量和函数的作用域,避免命名冲突。static全局变量和函数仅在当前文件生效,提供了一种隐藏数据的方式。同时,static也能使局部变量在函数调用结束后保留其值,实现持久化。通过示例展示了static在局部变量中的应用,解释了其在内存管理和模块化开发中的意义。
摘要由CSDN通过智能技术生成

我们知道,全局变量和函数的作用域默认是整个程序,也就是所有的源文件,这给程序的模块化开发带来了很大方便,让我们能够在模块 A 中调用模块 B 中定义的变量和函数,而不用把所有的代码都集中到一个模块。

但这有时候也会引发命名冲突的问题,例如在 a.c 中定义了一个变量 n,在 b.c 中又定义了一次,链接时就会发生重复定义错误,原因很简单,变量只能定义一次。

如果两个文件都是我们自己编写的或者其中一个是,遇到这样的情况还比较好处理,修改变量的名字即可;如果两个文件都是其他程序员编写的,或者是第三方的库,修改起来就颇费精力了。

实际开发中,我们通常将不需要被其他模块调用的全局变量或函数用 static 关键字来修饰,static 能够将全局变量和函数的作用域限制在当前文件中,在其他文件中无效。下面我们通过一个实例来演示。

module.c 源码:

 main.c 源码:

运行结果:
http://c.biancheng.net
n = 100

我们在 module.c 中定义了变量 n 和函数 say(),它们都被 static 修饰,所以只

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值