1.为什么要用函数
(1)避免代码冗长
![](https://i-blog.csdnimg.cn/blog_migrate/e72e357449780353671fc852bfdbf717.png)
(2)模块化设计思路
![](https://i-blog.csdnimg.cn/blog_migrate/ee7650c600d50aec0171d8260d949a3b.png)
2.函数如何定义与调用
![](https://i-blog.csdnimg.cn/blog_migrate/52aaf719ca9fc6efa853a0ab1b8fa82b.png)
(1)定义无参函数
这是一个简单的“欢迎”函数,没有参数,没有返回值。
![](https://i-blog.csdnimg.cn/blog_migrate/41a24c77830518da37c685e68e46a671.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5ec47836135cdd5a0adb9fe20d80e3c2.png)
(2)定义有参函数
代码:
#include<stdio.h>
/*定义一个加法函数,括号内是参数列表,参数个数
根据需求而定,需要注意的是,定义有参数和返回值的
函数需要定义类型(int,float...)*/
int jiaFa(int data1,int data2)
{
int sum;
sum = data1 + data2;
return sum;
//返回值,将运算结果返回给sum
}
int main()
{
int a;
int b;
int sum;
puts("请输入一个数");
scanf("%d",&a);
puts("请再输入一个数");
scanf("%d",&b);
printf("%d+%d=%d\n",a,b,jiaFa(a,b));
//jiaFa(a,b) 调用函数
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/0d8a392dea0a7307981f5d01a9e133d3.png)
3.形参和实参的区别
![](https://i-blog.csdnimg.cn/blog_migrate/5108bf33770b1f9844c2cfb5e9fa0c06.png)
(1)形参(形式参数)是我们在封装函数时所定义的参数列表里面的参数,如图中的data1,data2。
![](https://i-blog.csdnimg.cn/blog_migrate/d76530e58bebad695163082883edb5a1.png)
(2)而实参(实际参数)是main函数里我们所定义的参数。
![](https://i-blog.csdnimg.cn/blog_migrate/437a16109d81d0ff74779c1e9ccab19e.png)
(3)形参和实参名字可以相同,因为它们的地址空间不同,两者互不干扰。形参的值是我们在main函数里调用封装函数时,mian函数里的实参的值所赋予的。
(4)形参的生命周期=main函数里调用函数,实参传递给形参,调用结束,形参清空。