C++ 请解释一下图中程序如何运行出来的? 20
关于局部变量和静态局部变量和全局变量的变化,如何调用的函数以及初始化问题,尤其是结果的第二行和第四行那些数值怎么出来的?谢谢...
关于局部变量和静态局部变量和全局变量的变化,如何调用的函数以及初始化问题,尤其是结果的第二行和第四行那些数值怎么出来的? 谢谢
展开
展开全部
n是全局变量 , 所以无论是在mian里面还是在func里面 , 对它的值进操作都是能正常记录下来的。
在main 和 func 里面分别定义了一个静态变量和一个局部变量
先来说main里面 , 因为作用于的问题 , 在main里面输出的变量首先会采用main这个作用于里面的变量,这个你应该是知道的
主要是说说func里面的输出语句 , 第一次的时候 , 你初始化的 a = 5 , b = 5 ,因为这两个变量是在func里面的 , 所以输出的话首先会选择他们 , 其次才会考虑main里面定义的 ,
第一次输出 a = a+2 = 4 , b = b+5 = 10
第二次输出的时候 , 因为a是静态变量 , 生命周期的原因 , a的值是4 , 而b在第一次调完func之后就应经不存在了 ,所以不得初始值还是 5
因此 a = a+2 = 4+2 = 6 , b = b +5 = 5+5 = 10
这个主要就是作用域的问题 , 理解了就很简单
在main 和 func 里面分别定义了一个静态变量和一个局部变量
先来说main里面 , 因为作用于的问题 , 在main里面输出的变量首先会采用main这个作用于里面的变量,这个你应该是知道的
主要是说说func里面的输出语句 , 第一次的时候 , 你初始化的 a = 5 , b = 5 ,因为这两个变量是在func里面的 , 所以输出的话首先会选择他们 , 其次才会考虑main里面定义的 ,
第一次输出 a = a+2 = 4 , b = b+5 = 10
第二次输出的时候 , 因为a是静态变量 , 生命周期的原因 , a的值是4 , 而b在第一次调完func之后就应经不存在了 ,所以不得初始值还是 5
因此 a = a+2 = 4+2 = 6 , b = b +5 = 5+5 = 10
这个主要就是作用域的问题 , 理解了就很简单
追问
谢谢,请问可以帮忙解释一下函数的运行顺序么? 因为我只看到三个cout,为什么会出来四行结果呢? 以及我不太明白他是先运行main,然后显示第一个cout,再运行void func()显示最后一个cout,再回到main中调用func()? 谢谢啦
追答
你点用了两次func
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询