static与extern的作用
源文件一:/*
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;
}
输出结果为:a = 1
a = 10, b = 2
注意:编译时两个文件一起被编译
页:
[1]