手机工业产品介绍范文:c语言的问题!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 04:32:14
#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);
}
哪位高手能把这个题目的思路写清楚啊?

这个题目主要是考static int的用法,很简单,教科书上都有。

首先要弄清楚,main里面的变量m和函数func里面的m没有任何关系,为区别它们,下面的说明中,func的变量m将使用func.m来代替~~func的m,i都是静态变量,每次func结束后还保留上次的值。

int k=4,m=1,p;
p=func(k,m);
//传入4,1给func,i+=m+1这句令i=0+1+2=3,m=i+a+b令m=3+4+1=8,最后返回的m值为8,执行完后func.i==3,func.m==8,p=8

printf("%d,",p); //在屏幕上输出8,
p=func("%d\n",p); //这句话参数错了,不知你原来的是什么,估计是p=func(k,p); ???
如果真是,那么:
传入4,8给func,i+=m+1令i=3+8+1=12,m=i+a+b令m=8+4+8=20,最后返回20(i,m的值依然是上次的3和8)
所以最后p=20,func.i=12,func.m=20

对于写作业的人来说,不给与回答