首先是
1.无参数无返回值
2.有参数无返回值
3.有参数有返回值
4.无参数有返回值
其次是要在main函数前或者里面进行声明,形式与调用时相同
#include "stdio.h"
void max();
void max1(int ,int);
int max2(int ,int);
int max3();
int main()
{
int a,b,e;
printf("现在开始判断ab的大小\n");
max();
printf("max函数执行完毕\n");
printf("现在执行max1\n");
scanf("%d %d",&a,&b);
max1(a,b);
printf("max1执行完毕\n");
printf("现在执行max2\n");
scanf("%d %d",&a,&b);
max2(a,b);
printf("max=%d\n",max2(a,b));
printf("max2执行完毕\n");
printf("现在执行max3\n");
e=max3();
printf("max=%d\n",e);
printf("max3执行完毕\n");
return 0;
}
void max()//无参数无返回值
{
int a,b;
a=40;
b=23;
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}
void max1(int a,int b)//有参数无返回值
{
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}
int max2(int a,int b)//有参数有返回值
{
if(a>b)
return a;
else
return b;
}
int max3()//无参数有返回值
{
int a,b;
a=15;
b=20;
if(a>b)
return a;
else
return b;
}
//这里返回值是返回给函数,由函数带回主函数。
更清晰些的解释:
#include "stdio.h"
void max();
//全局变量:定义在所有的函数体之外,在任何函数体内都可使用
void max2();
int main()
{
int c,d;//局部变量:定义在某个函数内部的变量为局部变量,只能在该函数的大括号里使用(家小孩理解)没打错!
printf("判断ab的最大值\n");
max();
printf("max函数执行完毕\n");
printf("开始执行第二个函数max2\n");
scanf("%d %d",&c,&d);//把输入的两个值放到里面送出去
max2(c,d);//调用的时候传递的变量是实参 值传递 把值copy一份给形参
return 0;//有返回值的函数,函数体最后必须有return关键字 值给了函数名
}
void max()//无参数无返回值
{
int a,b;
a=40;
b=39;
if(a>b)printf("max=%d\n",a);
else printf("max=%d",b);
}
//从main函数中读入两个整数,写一个函数完成两个整数的比较,输出最大值
//无法确定的数据,作为参数处理
void max2(int a,int b)//函数定义的时候,参数叫做形参,就是先占着,需要上面的赋值给参数
{
printf("a=%d b=%d\n",a,b);
if(a>b)
printf("max=%d",a);
else
printf("max=%d",b);
}
或许很啰嗦,但是理解了就值得。
下面是实参和形参的理解:
#include "stdio.h"
int a,b;
a=10,b=5;
int max();
void main()
{
int c,d;
printf("比较a,b的大小\n");
scanf("%d %d",&c,&d);
max(c,d);//这里的c和d就是由上面的scanf键盘读入的实参,max调用,将c,d的值给下面的e和f
printf("max函数执行完毕\n");
}
int max(int e,int f)//这里的e和f就是形参,用于此函数体中的使用
{
printf("a=%d b=%d\n",a,b);
}