封装功能,可以反复调用,在代码更新时也希望尽量减少修改量
int main()
{
int i;
scanf("%d",&i);
printf("%d\n",i);
scanf("%d",&i);
printf("%d\n",i);
scanf("%d",&i);
printf("%d\n",i);
}
函数代码
int main()
{
func();
func();
}
func()
{
int i;
scanf("%d",&i);
printf("%d\n",i);
}
主函数也是函数
使用参数:
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
printf("最大值为:%d\n",(i>j)?i:j);
scanf("%d",&i);
scanf("%d",&j);
printf("最大值为:%d\n",(i>j)?i:j);
}
函数使用:
int main()
{
func();
func();
}
func()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
printf("最大值为:%d\n",(i>j)?i:j);
}
使用参数可以让调用者自己决定数值的输入方式
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
func(i,j);
func(j,i);
}
func(int i,int j)
{
printf("最大值为:%d\n",(i>j)?i:j);
}
返回值
既然参数可以决定如何获取数值,为什么不可以调用者自主决定结果值的处理方式呢?
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
printf("最大值为:%d\n",func(i,j));
int temp=func(j,i);
func(func(j,i),i);
printf("temp=%d\n",temp);
}
int func(int i,int j)
{
return (i>j)?i:j;
}
内存分配原理解释
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
func(i,j);
printf("%d<%d\n",i,j);
}
void func(int i,int j)
{
int temp;
if(i>j)
{
temp=i;
i=j;
j=temp;
}
}
建议在使用前声明函数原型
int main()
{
void func(int ,int ,int)
int i,j;
scanf("%d",&i);
scanf("%d",&j);
func(i,j);
printf("%d<%d\n",i,j);
}
void func(int i,int j,int t)
{
int temp;
if(i>j)
{
temp=i;
i=j;
j=temp;
}
}
函数嵌套调用
int main()
{
int max4(int ,int ,int ,int);
int num1,num2,num3,num4,max;
scanf("%d,%d,%d,%d",&num1,&num2,&num3,&num4);
max=max4(num1,num2,num3,num4);
printf("max=%d\n",max);
}
int max4(int num1,int num2,int num3,int num4)
{
int max2(int num1,int num2);
int max;
max=max2(num1,num2);
max=max2(max,num3);
max=max2(max,num4);
return max;
}
int max2(int num1,int num2)
{
return (num1>num2)?num1:num2;
}
递归调用
int main()
{
int num=4;
printf("%d=%d\n",num,factorial(num));
}
int factorial(int n)
{
if(n>1)
return n*factorial(n-1);
else
return 1;
}
全局变量(尽量不要使用)
int num;
int main()
{
printf("%d\n",num);
func();
printf("%d\n",num);
}
void func()
{
num=4;
}
静态变量
int main()
{
printf("%d\n",func());
printf("%d\n",func());
printf("%d\n",func());
}
int func()
{
static int temp=1;
temp++;
return temp;
}