让人费解的一道C语言题目
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/18 14:48:17
让人费解的一道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起到什么作用
#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起到什么作用
![让人费解的一道C语言题目](/uploads/image/z/18645-69-5.jpg?t=%E8%AE%A9%E4%BA%BA%E8%B4%B9%E8%A7%A3%E7%9A%84%E4%B8%80%E9%81%93C%E8%AF%AD%E8%A8%80%E9%A2%98%E7%9B%AE)
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
举个例子
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