1 首先运行内部的fun(d),此时d为全局变量,其值1传递给fun函数的参数p。
2 在fun函数内部,定义了一个静态变量d,这个变量从函数第一次调用时存在,到程序结束才消亡。
(注意:不是函数结束就消亡!)
3 由于静态变量d为5,则执行d+=p;语句后,d为6,打印6且返回6。
4 由于函数返回6,则执行fun(a+fun(d))时,实际参数值为9,故此时形式参数p的值为9。
5 进入函数体,程序忽略语句:static int d=5;。因为在第一次运行时,已经声明了这个变量。
故此时,该变量的值为上一次函数结束时的值, 为6!而不是5!
6 后面自然是6+9=15了!
可以认为:一个函数内部定义了一个静态变量,那么它只被定义一次,而且其值不随函数运行结束而
消亡。当下一次调用该函数时,静态变量的值保持上一次函数结束时的值。