以下程序输出的最后一个值是【 】。 int ff(int n) {static int f=1; f=f*n; return f; } main() {int i; for(i=1;

admin2010-05-22  26

问题 以下程序输出的最后一个值是【  】。
   int ff(int n)
   {static int f=1;
       f=f*n;
       return f;
   }
   main()
   {int i;
       for(i=1;i<5;i++) printf("%d\n",ff(i));}

选项

答案120

解析 静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:
①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
②对静态局部变量是在编译时赋被值的,即只赋被值一次,在程序运行时它已有被值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。
③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋被值)
④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。
本题中函数的功能是:与for语句一起求一个整数的阶乘。
转载请注明原文地址:https://jikaoti.com/ti/vAI0FFFM
0

最新回复(0)