C语言extern声明外部变量详解

需积分: 10 1 下载量 24 浏览量 更新于2024-08-24 收藏 5.65MB PPT 举报
"本资源是关于C语言的教程,特别是讲解了如何使用extern声明外部变量。C语言是一种广泛使用的高级编程语言,起源于贝尔实验室的B语言,经过D.M.Ritchie的改进后用于开发UNIX操作系统。随着UNIX的普及,C语言也逐渐流行并标准化,先是ANSI C,然后是ISO C。学习C语言需要了解其特点、程序结构以及在不同编译系统中的差异。在C语言中,外部变量是全局变量的一种,作用域覆盖整个源文件,而extern关键字用来在其他文件中声明一个已在其他地方定义的外部变量,以便扩展其作用域。" C语言是计算机科学中的基础语言,它具有简洁、高效和接近硬件的特点。C语言的起源可以追溯到1970年代,由B语言发展而来,最初用于编写UNIX操作系统。随着1978年《The C Programming Language》的出版,C语言开始广泛传播,其标准也在不断演进,如1983年的ANSI C,1990年的ISO C标准(ISO 9899—1990),以及后续的修订。 在C语言中,变量分为局部变量和全局变量。全局变量是在函数外部定义的,它们在整个源文件中都可见,作用域从定义位置开始直到文件结束。外部变量存储在静态存储区,其生命周期贯穿整个程序执行过程。如果要在其他源文件中使用一个已经在一个文件中定义的全局变量,就需要使用extern关键字来声明该变量,这使得外部变量可以在多个文件之间共享,但不分配额外的存储空间。 例如,在一个源文件中,我们可能有如下定义: ```c // file1.c int global_var = 10; // 全局变量定义 void function_in_file1() { // ... } ``` 然后在另一个源文件中,我们需要访问这个全局变量: ```c // file2.c extern int global_var; // 使用extern声明全局变量 void function_in_file2() { printf("Value of global_var is %d\n", global_var); } ``` 在这个例子中,`extern int global_var;` 声明了`global_var`的存在,使得`file2.c`知道这个变量,但不会重新分配内存。编译时,链接器会确保所有对`global_var`的引用指向同一个内存地址。 不同的C编译器可能有一些特定的实现或扩展,因此了解所使用的编译器特性是很重要的。在学习C语言的过程中,通常会以一个特定的标准(如ANSI C或ISO C)作为基础,同时参考编译器的文档以理解任何可能的差异。 C语言是一种强大的编程工具,extern关键字则是其重要组成部分,允许程序员在多个文件间共享和管理全局变量。掌握C语言和extern的使用,对于理解和编写高效、可维护的程序至关重要。