不知不觉已经10点多了,而此时的我有的只是沉下心的思考,快到9月了,该把自己初始化为0,从头复习了。
先说全局变量,定义全局变了很简单却又很危险。简单在于它定义在文件里独立于一切函数外面的变量,危险在于它的牵一发而动全身。
那么,定义好一个全局变量我们如何去引用它呢?有两种方式:1.引用头文件的方式2.使用关键字extern,这两种方式在使用上都正确,而在编译时却不同,如果用第一种方式,编译器会在编译期间报错,用第二种方式只会在链接报错。我们都知道linux下c生成可执行文件经历了4个阶段,预编译,编译,汇编,链接,最后生成可执行文件了。思考这两种方式在编译时的4个阶段不难得出在什么阶段出错。
在多个.c文件里可以引用同一个全局变量吗?答案是可以的,但怎样使用呢,首先先强调下什么是全局,既然是全局就是一个变量作用在项目所有文件。所以我们可以在某文件里用static声明它,意思是它的作用范围就是声明后所用的那部分,也可以说它是一个本地的全局变量。还有就是在不同的.c文件里引用时,只能一个文件里对全局变量初始化,否则在链接时,编译器无法判断初始值从而报错。
全局变量和局部变量能否重名?这个是可以滴,但局部变量会屏蔽掉全局变量。