extern关键字extern

如题所述

在编程中,extern关键字用于声明已经在其他源文件中定义的变量或函数。对于数组的声明,让我们以一个例子来说明问题:


在一个源文件中,我们定义了一个数组:char a[6]; 这表示一个包含6个字符的数组。


然而,在另一个文件中,错误的声明方式是这样写的:extern char *a; 这里,试图用一个指针变量char *a去引用整个数组。然而,这会导致程序运行时错误,因为指向类型T的指针并不等同于类型T的数组。正确的声明应该是:extern char a[6]; 这样声明的是整个数组,而非指向数组的指针。


实例中,如果数组a被赋值为"abcd",实际地址可能是0x12345678,而试图通过指针*a访问可能会导致非法访问。这提示我们在使用extern时,需要确保声明和实际定义的一致性。


extern还有其他用法,比如在头文件中声明全局变量,以便其他文件可以引用。例如:


extern int a; 这是声明,表示在某个位置有一个全局变量a,但并未提供初始化或定义。


而在定义时,int a; 或 int a = 0; 会为变量分配存储空间,后者还提供了初始值。重要的是,尽管extern int a = 0; 和 int a = 0;看似相同,但前者是声明加初始化,后者是完整的定义。


最后,需要注意的是,extern在引用全局变量时不能省略,因为它区分了声明和定义。如果省略,如int a;,则被视为定义,而非声明,这可能导致意外的编译错误。


扩展资料

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。

温馨提示:答案为网友推荐,仅供参考
相似回答