background image

 

j

 

s

 

18 

main

函数 

kk 函数 

10

 

0

 

0

 

main 函数 

kk 函数 

5

 

4

 

j

 

1

 

s

 

18

 

main 函数 

kk

函数 

y

 

20

 

x

 

8

 

图 7.1  内部静态变量

7.4  register 存储类型的变量与作用范围

寄存器变量的特点:
  register 变量具有局部寿命,与 auto 相同。

 只用于自动型变量及函数的形式参数说明,不适用于外部变量和静态变量。

 寄存器变量不能用&运算符取其地址。

 寄存器变量也是自动类变量。它与 auto 变量的区别仅在于:用 register 说明的变量,

可以把那些频繁引用的变量声明为 register 变量,有助于提高程序的运行速度。
例 7.5  阅读下列程序,register 变量应用举例。

编辑源程序代码7-5.c

#include<stdio.h> 
int  power(int x, register int u)
{    

register int  n , p ;
for(p=1,n=1;n<=u;n++)

p= p*x ;

return p ;

}

int  main( )
{

int  s;

  s=power(5,3);
  printf("s=%d\n",s);
}

7.5  extern 存储类型的变量与作用范围

外部变量是在函数外部任意位置上定义的变量。定义时,在变量的类型前不能用

(a)执行语句 static int y = 5; 

时参数情况

(b)首次函数调用结束返回
main 时参数情况

( c ) 第 二 次 执 行 语 句 return 
(x+y);

 

时参数情况

main 时参数情况