注册 登录
编程论坛 C语言论坛

下面这段代码,打印输出的结果是

黑暗骑士5D 发布于 2020-02-25 16:55, 2275 次点击
#include <stdio.h>
void hoho(){
    static int k = 2;
    k++;
    printf("k=%d," , k);
}
int main(){
    hoho();
    hoho();
    return 0;
}
为什么结果是k=3,k=4而不是k=3,k=3
3 回复
#2
liujin22020-02-25 17:49
static int k = 2;
变量 k 为static 类型,在没有重新赋值的情况下保持上一次的值不变。
第一次调用hoho(), k=3.
第二次调用hoho()时, k = 3+1 = 4;
#3
hbccc2020-02-25 18:25
static 是静态变量,第一次调用初始化赋值一次,第二次调用不再初始化赋值
#4
八画小子2020-02-26 00:05
关键字 static 修饰声明的变量并不是自动变量,其存储空间在数据段而不是栈段,因此一直存在,而且其值保持之前最后一次赋值的结果。
1