extern和static的区别

1. static

1.1 局部变量

  • 生命周期是静态数据区,直到程序结束。
  • 作用域仍然是当前语句块。
  • 注意:静态局部变量只在初次运行时进行初始化,且只进行一次。
  • 注意:如果没有进行初始化的话,整形变量系统自动赋值为0,字符数组,自动赋值为’/0’

1.2 全局变量

  • 作用域仅在本文件。

1.3 修饰函数

与修饰变量大同小异,仅仅改变了作用域。

1.4 成员函数

  • 该函数属于这个类,而不属于类的任何对象。只能访问静态成员。

2. extern

  • 表示此变量/函数在别处定义,要在此处引用。
  • 如果是在main函数中进行声明的,则只能在main函数中调用,在其它函数中不能调用。
  • 其实要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可,为啥要用extern?因为用extern会加速程序的编译过程,这样能节省时间。
  • 用于指示C或者C++函数的调用规范:比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。
    (这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值