还是函数问题
#include "stdio.h"fun(int b)
{static int a=4;
a+=b;
return (a);
}
main()
{int a=1,b=2,n;
n=fun(a);
n=fun(b);
printf("%d\n",n);
}
请问运行后的结果?
搜索更多相关的解决方案:
函数
----------------解决方案--------------------------------------------------------
#include "stdio.h"
int fun(int b)
{static int a=4;
a+=b;
return (a);
}
main()
{int a=1,b=2,n;
n=fun(a);
n=fun(b);
printf("%d\n",n);
}
结果是7,静态局部变量有记忆功能
----------------解决方案--------------------------------------------------------
是7么?我怎么感觉是6
也不是太懂
有记忆功能说的应该是全局变量吧?
----------------解决方案--------------------------------------------------------
Javal兄,能详细给解释下吗?谢谢了
----------------解决方案--------------------------------------------------------
是7的啊~~
----------------解决方案--------------------------------------------------------
#include "stdio.h"
int fun(int b)
{static int a=4;
a+=b;
return (a);
}
main()
{int a=1,b=2,n;
n=fun(a);
// int fun(int b) // a作为参数传递给fun(),即 b=1 (a=1)
// {static int a=4; // 声明静态局部变量 a, 并赋初值为4
// a+=b; // 这个a是上面声明的静态局部变量a, a=a+b=4+1=5
// return (a); // 返回a的值,即5;n此时的值为5
// }
n=fun(b);
// int fun(int b) // b作为参数传递给fun(),即 b=2 (b=2)
// {static int a=4; // a为静态局部变量,只被初始化一次,下一次依据上一次的结果值,因此a的值为5
// a+=b; // a=a+b=5+2=7
// return (a); // 返回a的值,即7;n此时的值为7
// }
printf("%d\n",n);
}
----------------解决方案--------------------------------------------------------