c语言的题目,为什么结果是(3,6),s不是没初始化吗,求解释,代码如下

#include <stdio.h>
int f(int n)
{ static int k,s;
n--;
for (k=n;k>0;k--)
s+=k;
return s;
}
void main()
{int k;
k=f(3);
printf("(%d,%d)",k,f(k));
}

第1个回答  2012-08-29
你对内存里面的一些分配都不是很清楚,静态变量在你定义的时候编译器是会自动初始化为0的。建议你看下关于内存管理方面的知识。本回答被网友采纳
第2个回答  2012-08-29
没被初始化,正常就是定义为int型,自动初始化为0.我个人觉得是。
第3个回答  2012-08-29
static int k,s;

这里设置的是局部静态变量 可以自动初始化为0 你把static去掉 肯定就不是这个结果了本回答被提问者采纳
相似回答