广州网站定制多少钱,北京企业建网站公司,义乌app制作公司,做网站有必要?山不在高#xff0c;有仙则名。水不在深#xff0c;有龙则灵。 ----CSDN 时时三省
C程序可以由一个或多个源程序文件组成。如果程序只由一个源文件组成#xff0c;使用外部变量的方法前面已经介绍。如果程序由多个源程序文件组成#xff0c;那么在一个文件中想引用另一个文…山不在高有仙则名。水不在深有龙则灵。 ----CSDN 时时三省
C程序可以由一个或多个源程序文件组成。如果程序只由一个源文件组成使用外部变量的方法前面已经介绍。如果程序由多个源程序文件组成那么在一个文件中想引用另一个文件中已定义的外部变量有什么办法呢?
如果一个程序包含两个文件在两个文件中都要用到同一个外部变量Num不能分别在两个文件中各自定义一个外部变量Num否则在进行程序的连接时会出现“重复定义”的错误。正确的做法是在任一个文件中定义外部变量Num而在另一文件中用extern对Num作“外部变量声明”即“extern Num”。在编译和连接时系统会由此知道Num有“外部链接”可以从别处找到已定义的外部变量Num并将在另一文件中定义的外部变量Num的作用域扩展到本文件在本文件中可以合法地引用外部变量Num。
例题
给定b的值输入a和m求a * b和aᵐ”的值。
解题思路
分别编写两个文件模块其中文件filel包含主函数另一个文件file2包含求a”的函数。在filel文件中定义外部变量A在file2中用extern声明外部变量A把A的作用域扩展到file2文件。
编写程序
文件file1.c代码 文件file2.c代码 运行结果 从键盘输入a的值为2m的值为3程序输出2 * 3 62**3 8。由于计算机无法输出上角故以“* *”代表幂次这是借用FORTRAN语言表示乘方的方法。
程序分析
file2.c文件的开头有一个extern声明它声明在本文件中出现的变量A是一个“在其他文件中定义过的外部变量”。本来外部变量A的作用域是filel .c但现在用extern声明将其作用域扩大到file2.c文件。
假如某一程序包括了5个源文件模块。在一个文件中定义外部整型变量A其他4个文件都可以引用A但必须在每一个文件中都加上一个“externA”声明。在各文件经过编译后将各目标文件连接成一个可执行的目标文件。
说明用这种方法扩展全局变量的作用域应十分慎重因为在执行一个文件中的操作时可能会改变该全局变量的值会影响到另一文件中全局变量的值从而影响该文件中函数的执行结果。
extern既可以用来扩展外部变量在本文件中的作用域又可以使外部变量的作用域从一个文件扩展到程序中的其他文件那么系统怎么区别处理呢?
实际上在编译时遇到extern时先在本文件中找外部变量的定义如果找到就在本文件中扩展作用域
如果找不到就在连接时从其他文件中找外部变量的定义。如果从其他文件中找到了就将作用域扩展到本文件
如果再找不到就按出错处理。