C语言 static和extern知识点

static关键字


static关键字一共有3个不同的用途:

  1. 用于函数内部的局部变量声明时,static关键字的作用是改变局部变量的存储类型,从自动变量改为静态变量,也就是说这个局部变量不在存储在堆栈或寄存器中,而是在编译的时候由编译器分配一个静态的地址空间,但这个变量的作用域不受影响,依然仅局限在声明它的函数内部才可以访问。需要说明的是一旦函数内部的局部变量被声明为static,这个函数就有可能变得不可重入(可重入是指相同的参数输入会有相同的结果输出)
  2. 如果static关键字用于函数定义时,这个函数就只能在定义该函数的C文件中引用,该C文件外的代码将无法调用这个函数。
  3. 在用于全局变量的声明时,static关键字的作用类似于函数的情况,这个全局变量的作用域将局限在声明该变量的C文件内部,这个C文件之外的代码将无法访问这个变量(事实上,如果采用指针的方式进行访问时可以的,但是这样就违背了将一个全局变量声明为static的初衷了)

对于函数名和全局变量的static声明类似于C++中的private关键字,利用static关键字可以再C程序中实现类似于C++中封装的概念,将局部的、私有的函数或变量声明为static,可以屏蔽C文件中的实现细节,降低一个项目中若干C文件之间的耦合度,为软件的模块化开发、测试、维护、移植提供便利条件。
 

extern关键字


默认情况下,C语言中的全局变量和函数的作用域仅限于定义或什么这个函数或变量的C文件内部,如果需要从这个C文件之外访问这些函数或者全局变量就需要使用extern关键字。这是因为C编译器是以C文件为单位进行编译的,如果这个C文件中引用了其他文件中定义的函数或变量,编译器将无法找到这个函数或变量的定义,从而给出该函数或变量未定义的错位信息。
使用extern的方式有2种:
1.在C文件中直接声明某个其他文件中定义的函数或全局变量为extern,从而告诉编译器这个函数或变量是在其他C文件中定义的。
2.在头文件中声明某个函数或变量为extern,然后在需要引用该函数或变量的C文件中包含这个头文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值