TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
源文件一:- /*
- static 与 extern在函数中与全局变量中的作用
- 1、函数:
- 1> static用来定义与声明内部函数;
- 2> extern用来定义与声明外部函数,一般情况下extern省略;
- 2、变量:
- 1> static用来定义内部变量;
- 2> extern用来声明外部变量;
- 3、内部函数与内部变量只能在本文件中访问,不能被外部文件程序所调用;
- 4、外部函数与外部变量可以被外部文件中的程序所调用,外部变量在不同的文件中被重复定义事实上定义的都是同一个变量;
- */
- #include <stdio.h>
- extern int a; // 声明一个外部变量
- static int b; // 定义一个内部变量
- void test(); // 等于extern void test(),extern声明一个外部函数
- int main() {
-
- a = 1; // 修改外部变量a的值,该值会早影响所有文件中的外部变量a的值;
-
- b = 2; // b为内部变量,只受本文件赋值影响,外部b的值不修改其值
-
- test(); // 调用外部函数
- printf("a = %d, b = %d\n", a, b); // 检测此时a与b的值;
-
- return 0;
- }
- int a; // 同一个全局变量被多个文件所定义时不能在多个文件中初始化,事实上系统会自动初始化为0,放在此处为了让检测前面的声明;
复制代码 源文件二:- /*
- 该文件用来配合主函数所在文件进行extern与static两个参数的作用;
- */
- #include <stdio.h>
- int a; // 定义一个外部变量
- static int b = 10; // 定义一个内部变量,检测该b值是否会影响主函数中b的值;
- void test() { // 相当于extern void test() {} 定义一个外部函数;
-
- printf("a = %d\n", a); //此时a的值受外部其他文件a的影响;
- a = 10; // 修改外部变量a的值,同时该值影响所有其他文件外部变量a;
- }
复制代码 输出结果为:
|
|