1.如何引用一个已经定义过的全局变量?
答:extern 可以用引用头文件的方式,也可以用 extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局
变理,假定你将那个编写错了,那么在编译期间会报错,如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译
期间不会报错,而在连接期间报错。
2.全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?
答:可以,在不同的 C 文件中以 static 形式来声明同名全局变量。 可以在不同的 C 文件中声明同名的全局变量,前提是
其中只能有一个 C 文件中对此变量赋初值,此时连接不会出错
3.通过下例要看出 static 全局变量与普通的全局变量有什么区别来?
全局变量(外部变量)的说明之前再冠以 static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当
然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源
程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义
该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为
该源文件内的函数公用, 因此可以避免在其它源文件中引起错误
--------------------------------------------------------------------------------------
fu1.h:
1. #ifndefFU1_h
2. #deneFU1_h
3.
4. #include<stdio.h>
5.
6. voidsetone();
7.
8. #endif
------------------------------------------------------------------------------------------------
fu1.c:
1. #include"fu1.h"
2.
3. inti;
4.
5. voidsetone()
6. {
7. printf("%d\n",i);
8. }
------------------------------------------------------------------------------------------------------
fu2.h
1. #ifndefFU2_h
2. #deneFU2_h
3.
评论2