函数调用结束后,函数栈销毁,所以你调用一次函数对a赋值,调完结束后a就被清空了,下一次调用函数a的值不会被记录,你for循环调函数n之所以保存一直会被记录,是因为你给n加了static,相当于n为全局变量,但a不是,下一次调用函数a重新定义,重新加加。
有帮助的话采纳一下哦🙊🙊🙊
下面是我的理解,供你参考:
1、首先k=0,n=0,m=0,a=2,a++后a变成3,n++后n变成1,所以n+m+a加起来是4.
2、然后k=1,又是新建的一个变量a还是2,a++后a变成3,n++后由先前的1变成2,m=1,
所以n+m+a加起来就是6.
3、然后k=2,依然又新建一个新的变量a还是2,a++后a变成3,n++后由先前的2变成3,m=2,
所以n+m+a加起来是8.
4、最后k=3,a又是2,a++后变成3,n++后由先前的3变成4,m=3,所以n+m+a加起来是10.
5、到k=4,程序就结束了,所以最后打印的结果就依次是:4,6,8,10 。
因为变量a是函数的局部变量,所以每调用一次就新建一次,每次的值都是2,a++后变成3,它的值
不会像静态变量那样在函数每次调用都会存在,他是每新建一个就都是一个默认的值,函数退出就销毁了。
函数里面是形参。即便你在主函数里面定义a,虽然都叫a,但是你在函数里面操作a是不会影响主函数里面的a的。除非你传地址进入主函数。而n是全局变量,出了函数之后不会销毁,所以n的值不会变