c语言问题:有关静态型变量

2025-04-28 04:16:48
推荐回答(4个)
回答1:

结果是
1 11 3

分析如下:
调用三次s(int a)

第一次s(0)
此时a=0 b=10
if语句中走的是 return(++a), 所以返值只是1
执行结束,s(int) 返回后,a值销毁,b值还是10

第二次s(1)
此时a=1 b=10
if语句中走的是 return(++b), 所以返回值是11
执行结束,s(int) 返回后,a值销毁,b值是11

第三次s(2)
此时a=2 b=11
if语句中走的是 return(++a), 所以返回值是3
执行结束,s(int) 返回后,a值销毁,b值还是11

回答2:

结果 1 11 3
i=0时,s(0)=1 此时b=10 输出1
i=1时 s(1)=11 此时b=11 输出11
i=2时 s(2)=3 此时b=11; 输出3
i=3时 跳出循环,

回答3:

变量b是static的,即使是局部变量,在程序结束之前也不会释放。这段程序好像跟静态变量没啥关系吧。
打印结果应该是1、11、3

回答4:

结果1 11 3 b的存储空间在函数结束时不会释放,它凡在静态存储区,而i传递给a的值,每次执行一次函数s()就会释放一次a的存储空间。