基本解释extern可以置于变量或者函数前以标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义
另外extern也可用来进行链接指定
问题extern 变量
在一个源文件里定义了一个数组
char a[
];
在另外一个文件里用下列语句进行了声明
extern char *a
请问这样可以吗?
答案与分析
)不可以程序运行时会告诉你非法访问原因在于指向类型T的指针并不等价于类型T的数组extern char *a声明的是一个指针变量而不是字符数组因此与实际的定义不同从而造成运行时非法访问应该将声明改为extern char a[ ]
)例子分析如下如果a[] = abcd则外部变量a=x (abcd的ASCII码值)*a显然没有意义如下图
显然a指向的空间(x)没有意义易出现非法内存访问
)这提示我们在使用extern时候要严格对应声明时的格式在实际编程中这样的错误屡见不鲜
)extern用在变量声明中常常有这样一个作用你在*c文件中声明了一个全局的变量这个全局的变量如果要被引用就放在*h中并用extern来声明
[] []