Sian 发表于 2014-3-7 21:57:02

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




Sian 发表于 2014-3-7 21:58:26

注意:编译时两个文件一起被编译
页: [1]
查看完整版本: static与extern的作用