70、extern的用法二和静态外部变量
新建工程 win32 console applicaton 名称70 空工程
新建工作区 添加到当前的工作空间 ww
新建文件 c++ source file
1.cpp
int A =10;
static int B =100;//static修饰的全局变量称作 静态外部变量,其他文件不可以通过它的变量名来引用他
int *p = &B;
2.cpp
#include<stdio.h>
extern int A;//extern 可以将全局变量的作用域扩展到其他文件①在不同的文件中不可以有重名的 非静态的全局变量②编译时遇到extern先在本文件中寻找其变量的定义,没找到会在连接的时候从其他文件中寻找其变量的定义
//extern int B;
extern int *p;
int main (void)
{
printf("%d\n",A);
//printf("%d\n",B);error因为是静态外部变量,不可以在其他文件中通过变量名来引用它
printf("%d\n",*p);//可以通过指针 间接的引用 其他文件中的静态全局变量
return 0;
}
static int A = 14;//可以尝试注释掉此句 对比输出结果
3.cpp
//int A = 99; error因为1.cpp中已经有了一个名字为A的非静态的全局变量