函数的定义和注意事项
C语言程序从main()函数开始执行,按顺序依次调用函数
为了让我们使用其他函数的时候不用重新定义变量名,可以把一个类型的函数进行定义。
返回类型 函数名 (形式参数)
//返回类型用语知名函数输出值类型。如果没有输出值,则返回类型为void,如果在函数定义时没有注明返回类型,则默认为int类型。
//形参的数据类型要和实参数据类型保持一致
在主函数中我们定义的变量属于实行参数,而且形参的改变不会导致实参发送改变。
形式参数可以有多个,基本形式如下
类型 变量名1,类型 变量名2,类型 变量名3,......
注意:在函数体内声明的变量不能和参数列表中的变量同名!!!!
例题1.
定义一个计算圆面积的areaofcricle()函数,该函数包含一个double型参数r,r表示半径,将计算结果返回。
#include <stdio.h>
double areaofcircle(double r)
{
double pi = 3.14;
double a = pi * r * r;
return a;
}
int main(void)
{
double b = 1.2;
double area = areofcircle(b); //
printf("%lf", area);
return 0;
}
先执行main函数,然后把b的值调用如areofcircle函数,最后返回值a,把返回的a值赋给area,然后打印
例子2
#include <stdio.h>
double add(double x, double y) //括号内是形参
{
return x + y;
}
int main()
{
double a, b;
scanf("%lf %lf", &a, &b); //在输入a,b值后是实参
double sum = add(a, b);
printf("%lf", sum);
}
第二种形式
#include <stdio.h>
int main()
{
double add(double x, double y); //函数声明
double a, b;
scanf("%lf %lf", &a, &b); //在输入a,b值后是实参
double sum = add(a, b);
printf("%lf", sum);
}
double add(double x, double y) //括号内是形参
{
return x + y;
}
当函数add被定义在下面时候,需要在main函数中进行函数声明。
函数执行情况分析
语句 | 执行情况分析 |
---|---|
double a | 为a分配内存 |
double b | 为b分配内存 |
double sum = add(a,b) | 为sum分配内存<br/> 为x分配内存,存a的值<br/> 为y分配内存,存b的值,把取地址的a,b值调入函数体<br/> 执行add的函数体,返回值为x+y x,y占用内存被释放,函数add的返回值赋给sum。 |
形参在结束的那一刻被释放了,不会改变实参的值。
如果没有定义变量类型,则默认与主函数变量类型一致