一道c语言读程序题 #include<stdio.h> main() { int k=4,m=1,p; p=func(k,m); printf("%d, ",p); p=func(k

不好意思啊,我提问的时候百度抽了,没给我弹出详细一栏
#include<stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m);
printf("%d, ",p);
p=func(k,m);
printf("%d\n",p);
}
func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return m;
}

首先输出结果是 8,17
第二,你上面这个程序编译不了的,有2个问题
1),函数的返回值类型没写;
2),func()函数体放在了main()函数后面且没再main()函数中声明。
第三,注释该程序:
#include<stdio.h> //头文件
void main() //修改1:增加了void
{
int k=4,m=1,p; //定义变量k,m,p
int func(int,int); //修改2:声明函数func
p=func(k,m); //以k,m为参数,调用函数func,返回值赋给p
printf("%d, ",p); //输出p的值;
p=func(k,m); //以k,m为参数,第二次调用函数func,返回值赋给p
printf("%d\n",p); //再输出p的值;
}
int func(int a,int b)
{
static int m=0,i=2; //定义静态变量 m,i,初值分别为0,2;
i+=m+1; // i = i+m+1;第一次:i=2+0+1=3;第二次:i=3+8+1=12;
m=i+a+b; //m = i+a+b;第一次:m=3+4+1=8;第二次:m=12+4+1=17;
return m; //将m作为返回值 第一次返回:8; 第二次返回:17;
}

第四、说明一下“静态变量”
在被调用的函数体内,如果声明了某些变量(非静态),那么这些变量仅在该函数被执行期间起作用,也就意味着当函数的一次调用结束的时候,这些变量所在的内存空间都被释放掉了。如果再一次调用该函数,它将重新声明定义这些变量。
而如果某个变量被声明为静态变量(static)则这个变量在该函数第一次被调用时创建(分配其内存空间),当函数调用结束时,这个变量的内存空间保持不变,并不释放。这样如果该函数第二次被调用,则该变量将继续保有上一次执行时的值参与运算。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-18
请把问题写在“详细提问”上,题目能写的字数是有限的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网