从简单方面考虑:函数内部的静态变量,只初始化一次,也即该函数第一次运行时进行初始化,以后均不会执行初始化。拿上面的例子来说,static int a = 3只有在fun3函数第一次执行的时候将a初始化为3,而以后的调用均不会执行这句话,所以不难看出,第一次调用func3后a变为5,那么第二次调用时就是5了,所以n将会为6.如果你了解了编译原理,以及程序的链接与加载,就会更加透彻了,实际是static int a = 3;在编译期间时就已经初始化完毕,也就是a其实是放在可执行文件的.data节中,从而在实际运行时int a = 3是不会执行的,有点扯远了。不深入的话从第一点考虑就ok!...
首先开辟变量 k, m, n;k的初始值为3,m的初始值为1,n没有初始值;n=fun3(k):因为k=3所以fun3中return时a=a+x;此时a=3,为初始值;k作为参数传递给x;所以fun3返回5,n也被赋值成5;n=fun3(m);同理fun3的返回值是3+m,为4,所以n被赋值成4;最后一句,输出n...