字体
第(6/6)页
关灯
   存书签 书架管理 返回目录
进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

    3) 如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值 0(对

    数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是

    一个不确定的值。

    【例 8.16】打印 1 到 5 的阶乘值。

    int fac(int n)

    {static int f=1;

    f=f*n;

    return(f);

    }

    main()

    {int i;

    for(i=1;i<=5;i++)

    printf("%d!=%d\n",i,fac(i));

    }

    8.9.4 register 变量

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    为了提高效率,C 语言允许将局部变量得值放在 CPU 中的寄存器中,这种变量叫“寄存

    器变量”,用关键字 register 作声明。

    【例 8.17】使用寄存器变量。

    int fac(int n)

    {register int i,f=1;

    for(i=1;i<=n;i++)

    f=f*i

    return(f);

    }

    main()

    {int i;

    for(i=0;i<=5;i++)

    printf("%d!=%d\n",i,fac(i));

    }

    说明:

    1) 只有局部自动变量和形式参数可以作为寄存器变量;

    2) 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;

    3) 局部静态变量不能定义为寄存器变量。

    8.9.5

    松语文学免费小说阅读_www.16sy.com
上一页 目录 下一章