c语言二级题库里的一道题

void fun (int x, int pp[], int *n){ int i, j=0; for( i = 0; i<=x; i+=2) { if( x%i==0 ) { pp[j++]=i; } } *n = j; }为什么这样就能得出正确结果 图片里的就不行呢?

函数内的静态变量存放于静态存储区中,只会被初始化一次,且不会在函数结束后消亡,但其作用域仍限于函数内。
第一次执行n=fun3(2),初始化a为3,计算a+=2并返回给n,因此n=3+2=5;
第二次执行n+=fun3(2),此时a不会再重新初始化,而是沿用当前值5,计算a+=2得a=7,再计算n+=7得n=5+7=12。
最后输出n的值12.
温馨提示:答案为网友推荐,仅供参考
相似回答