函数的定义和注意事项

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。

形参在结束的那一刻被释放了,不会改变实参的值。

如果没有定义变量类型,则默认与主函数变量类型一致

最后修改:2021 年 12 月 21 日
如果觉得我的文章对你有用,请随意赞赏