【发布时间】:2021-11-18 06:53:29
【问题描述】:
我知道静态变量在程序的整个运行时保持它们的值,即使在函数调用之间也是如此。给定下面的代码,考虑到 x 被声明为静态并初始化为零,打印的 x 的值是多少。 using_static函数如何在每次调用函数时不给变量x赋值零?
int using_static()
{
static int x;
x = 0;
x++;
return (x);
}
int main()
{
int i;
i = 0;
while (i < 5)
{
using_static();
i++;
}
printf("%i", using_static());
return (0);
}
【问题讨论】:
-
您是否尝试在打开警告的情况下进行编译?你告诉
printf()打印一个函数指针,就像它是一个int;这不会很好地工作。 -
(如果你的代码有那么远;它首先有一个无限循环)。
-
@Shawn -- 所以你的意思是,如果你是一个名为
i的变量,故事永远不会改变?:) -
现在您可以运行那段代码并观察输出。并回答您自己的问题。
-
为什么要使用
while循环?这是一个完美的例子,它应该是一个for循环。此外,return语句不需要大括号。不要添加不必要的大括号,它们会损害对语言的理解。不要教自己不良的编码习惯。
标签: c initialization static-variables function-definition storage-duration