1. hello.c 文件
- #include<stdio.h>
- int a=1; //在其他文件中 通过声明 extern int a; 可以引用此全局变量 a
- //static int a = 1; -->用 static 修饰的全局变量在其他文件中不可以 引用
- extern void hello() //在其他.c 文件中 通过声明 extern void hello(); 可以调用此函数 等同于 extern void hello()
- //static void hello() --> 用 static 修饰的 函数 在其他文件中 不可以调用
- {
- printf("hello world!\n");
- printf("a = %d\n",a);
- a++;
- }
复制代码 2. main.c 文件
- #include<stdio.h>
- #include<stdlib.h>
- extern void hello(); // 此声明说明 hello(); 函数定义在其他文件中
- extern int a; //此声明说明 a 全局变量 定义在其他文件中
- void test();
- void main()
- {
- hello(); //调用外部函数
- hello();
- printf("a of main = %d\n",a);
- printf("==============\n");
- test();
- test();
- }
- void test()
- {
- static int q; //函数第一次调用时创建 只初始化一次 程序结束时释放。但作用域仅局限于此函数
- static int *d = NULL;
- if(d == NULL)
- d = (int *)malloc(sizeof(int));
- //int *d = (int *)malloc(sizeof(int));
- printf("in test q=%d\n",q);
- printf("in test d=%d addr=%x\n",*d,&d);
- q++;
- *d = *d +1;
- }
复制代码
Linux下的 简单的小程序,可以测试一下。
简单的说 : 修饰变量 和 修饰 函数
1、修饰函数
static 修饰的函数 称为 内部函数 只能被文件中的函数调用 ,在必要的时候使用可以降低函数间的耦合性。
extern 修饰 或者 无修饰符的函数 称为 外部函数 就是可以被其他文件调用的函数。但在调用前必须用 extern void funcname(void); 声明 。
2、修饰变量
a. 修饰全局变量时 与修饰函数类似
b. 修饰局部变量时 局部变量在 第一次调用函数时创建,并只初始化一次。变量不会随函数调用结束而释放,而是随程序结束而释放。但注意,变量作用域只局限于此函数,不能被其他函数调用。
只知道这些了,还有什么不全的请补充,如果有错误的地方请指教。3Q
|