作业帮 > 综合 > 作业

让人费解的一道C语言题目

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 07:31:39
让人费解的一道C语言题目
#include
int func(int a,int b);
void main()
{
int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func("%d\n",p);
}
int func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A.8,17 B.8,16 C.8,20 D.8,8能将下为什么吗?这上面的 static起到什么作用
static是静态变量的意思.在函数中定义普通的变量,当退出函数时他们就失效了.但是静态变量不会,下次进入函数时还是上次退出时的那个值.直到主程序结束.
举个例子
void example(int k)
{
static a=0;
printf("This is original value:%d\n",a);
a=k;
printf("This is new value:%d\n",a);
}
int main(void)
{
example(1);
example(2);
}
输出结果:
This is original value:0
This is new value:1
This is original value:1
This is new value:2