开发者社区> 问答> 正文

static的一个问题,运行结果和书上说的不一样。

#include 
void fun1(static int v) {
printf("%d\n",v);
}
int main(void) {
fun1(50);
fun1(100);
return 0;
}

展开
收起
a123456678 2016-03-24 10:14:17 1542 0
1 条回答
写回答
取消 提交回答
  • 如果在 VS2018 中编程,首先会产生一个编译警告:
    warning C4042: “v”: 有坏的存储类
    然后,运行的结果也确实是:50 和 100.

    静态变量,确实如你所说只分配一次内存、且只初始化一次,但后继对静态变量的赋值是有效的。一般静态变量用在函数体中,上述描述是没有问题的。
    但如你所说的做为函数的参数,由于调用时会给参数完成一次赋值的过程,所以应该会改变静态变量的值。

    2019-07-17 19:12:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《0代码搭应用》 立即下载
不止代码 立即下载
低代码开发师(初级)实战教程 立即下载