外部变量*
?
外部变量(global variable ):在函数外面定义的变量。
?
作用域(scope)为整个程序,即可在程序的所有函数中使用。外部变量有隐含初值0。
生存期(life cycle):外部变量(存储空间)在程序执行过程中始终存在。
??
外部变量说明(extern)*
?
C程序可以分别放在几个文件上,每个文件可作为一个编译单位分别编译。外部变量只需在某个文件上定义一次,其它文件若要引用此变量时,应用extern加以说明。(外部变量定义时不必加extern关键字)。
?
在同一文件中,若前面的函数要引用后面定义的外部(在函数之外)变量时,也应在函数里加以extern说明。
外部变量说明(extern)(续)*
?例如,对问题4.2的代码实现中,如果外部变量N不在程序头部定义,则需要用extern加以说明。外部变量说明…extern int N;int main(){…}int N = 0;void insertData(int array[], int data){…}外部变量定义外部变量说明(extern)(续)*
?
使用外部变量的原因:
????
解决函数单独编译的协调;与变量初始化有关;外部变量的值是永久的;
解决数据共享;
?
外部变量的副作用:
?
使用外部变量的函数独立性差,通常不能使用在其他的程序中。而且,如果多个函数都使用到某个外部变量,一旦出现差错,就很难发现问题是由哪个函数引起的。在程序中的某个部分引起外部变量的错误,很容易误以为是由另一部分引起的。
递归(Recursion)*
?
通过调用自身解决问题的过程称为递归。递归是解决某些复杂问题的有效方法。如:
n?0n?01?nx??n?1?x*xf(n)??f(n)??1x*f(n?1)n?0n?0?1n!???n*(n?1)!n??1n?11n*f(n?1)n??1n?1