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

2022-03-25 教育 218阅读
首先输出结果是8,17
第二,你上面这个程序编译不了的,有2个问题
1),函数的返回值类型没写;
2),func()函数体放在了main()函数后面且没再main()函数中声明。
第三,注释该程序:
#include//头文件
voidmain()//修改1:增加了void
{
intk=4,m=1,p;//定义变量k,m,p
intfunc(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的值;
}
intfunc(inta,intb)
{
staticintm=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;
returnm;//将m作为返回值第一次返回:8;第二次返回:17;
}

第四、说明一下“静态变量”
在被调用的函数体内,如果声明了某些变量(非静态),那么这些变量仅在该函数被执行期间起作用,也就意味着当函数的一次调用结束的时候,这些变量所在的内存空间都被释放掉了。如果再一次调用该函数,它将重新声明定义这些变量。
而如果某个变量被声明为静态变量(static)则这个变量在该函数第一次被调用时创建(分配其内存空间),当函数调用结束时,这个变量的内存空间保持不变,并不释放。这样如果该函数第二次被调用,则该变量将继续保有上一次执行时的值参与运算。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com