如果静态和外部都不是,则表示定义了一个全局变量,其作用域仅限于定义的当前文件的末尾。
静态效果是将全局变量的范围限制到当前文件从定义到当前文件的末尾,而其他文件不能在外部使用。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/e61190ef76c6a7efbae8915ff1faaf51f2de66f8?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
外部的作用是声明一个已在别处定义的全局变量,而不是重新定义新的全局变量,而是扩展全局变量的范围a.c:int i; //定义i变量,并使用外部变量来扩展它的范围static int j; //定义j变量。
我在这份文件中b.cextern int i; //正确,将我的范围扩大到b.c中extern int j; //错误,因为定义时j是静态的。