作业帮 > 综合 > 作业

#include /* 本部分代码功能建议:函数原型声明 *//* User Code Begin(Limit:line

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 23:22:01
#include
/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit:lines
#include /* 本部分代码功能建议:函数原型声明 *//* User Code Begin(Limit:line
double fac()
{
static double pp = 1, i = 0;
i++;
pp *= i;
return pp;
}
这个函数的意思是求阶乘,pp,i声明为静态变量,相当于全局变量,你每次在函数里面改变pp,i的值,但在次进入函数时,值依然存在,
所以当第一次进入函数时,pp为1,i为1,所以,函数返回1*1
当第二次进入函数时,pp还是1,但i++此时i为2,所以函数返回1*2,这时pp为2!
当第三次进入函数时,pp已经为2,i++此时i为3,所以函数返回2*3,也就是1*2*3,此时p为3!
同理第四次.第五次.
再问: 第三次进入函数时,pp值变成2了吗?不是每次进入函数时pp,i的值都是1??是不是改变之后,pp,i的值就存放在内存中,下次调用的值已经改变?
再答: pp,i是静态变量,所以只会初始化一次,也就是static double pp = 1, i = 0;这句语句只会在第一次进入的时候执行,静态变量是在堆中声明的,所以每次修改都会对pp,i产生影响。