大洋国际快递查询:让人费解的一道C语言题目

来源:百度文库 编辑:中科新闻网 时间:2024/05/11 04:21:55
#include <stdio.h>
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

给你举例说明一下
你把static改为auto或者什么都不加
然后运行多次程序
比较跟不改前的差别你就知道static有什么用了

static使得函数在下次调用时保持上次的数值.

static是一个全局定义!!