- 此问题在此处已有答案**:
What does "static" mean in C?(20个答案)
23分钟前就关门了。
我有一个带静态变量的C函数:
void plus_five() {
static int i = 10;
i += 10;
printf("%d", i);
}
int main() {
for(int i = 0;i < 10;i++) {
plus_five();
}
return 0;
}
我得到这个输出:十二十三十四十五十六十七十八十九十一百
为什么每次执行函数时,即使变量被设置为10,变量也会递增?
3条答案
按热度按时间kokeuurv1#
在函数内部声明为
static
的变量在程序启动时初始化 * 一次 *,并在连续的函数调用中保持其值。这意味着第一次调用
plus_five
时,i
的值将为10,函数会将该值增加到20。在下一次调用时,i
保留其值20,并增加到30,依此类推。7vhp5slm2#
为什么每次执行函数时,即使变量被设置为10,变量也会递增?
因为你把它标记为
static
,这意味着(在这个上下文中)你想让变量在程序的整个生命周期中持续存在,变量只初始化一次,从那以后它保持你给予它的任何值。可以将静态变量视为全局变量,它只能在声明它的函数内部可见。
xwmevbvl3#
变量实际上是递增的。它是由于
i += 10
表达式而递增的,并且它不依赖于是否在每次执行函数时被设置为10。现在真正的问题不是 '变量是否/为什么是/不是递增的' 而是 '为什么变量不是在每次执行函数时都重新初始化为10?'
答案是:因为关键字
static
就是这个意思变量仅初始化一次,并且在对函数的调用之间保持其值。