问一个c程序问题,希望各位帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/09 19:28:12
1.有一段程序我看不懂,不明白它的执行过程
2.既然函数已定义为空类型,为什么还可使用return语句
3.程序如下:
#include <stdio.h>
int func(int a,int b);
void main()
{
int k=4,m=1,p;
p=func(k,m);
printf("%d",p);

}
int func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);

}
p=func(k,m);
printf("%d",p);
输出p值为8,也就是m的值,那么k这个参数起的是什么作用

return语句是返回这个int func(int a,int b); 函数的值给p这个函数不是空类型啊。

#include <stdio.h>
int func(int a,int b);
void main()
{
int k=4,m=1,p; //1
p=func(k,m); //2
printf("%d",p); //7

}
int func(int a,int b)
{
static int m=0,i=2; //3
i+=m+1; //4
m=i+a+b; //5
return(m); //6

}

//number 是执行顺序
你使用return的那个函数(func)的返回类型是int,不是void。

8
int func(int a,int b),函数类型不是空类型啊,是整型的

static int m=0,i=2;
i+=m+1; 即(i=2+0+1=3)
m=i+a+b; 即(m=3+4+1=8)
return(m); 即(p=func(k,m)=8)

关于问题补充:
p=func(k,m); 里的m参数和return(m);中的m不是一回事
p=func(k,m); 里的m是参数,它在函数func(int a,int b)里和b是相等的,k和a是相等的。而return(m)中的m是函数func(int a,int b)里定义的static int m=0,它作为返回值传给main() 里的p

上面说的都对

int func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);

}

这个是函数 定义类型为int 所以返回一个m为int类型,这个和主函数没有关系.