8.1.5.1 函数定义

    M语言中,除了系统函数外,程序中使用到的每一个自定义函数都需要在特殊函数文件中定义(特殊函数文件参考8.1.5.5 自定义函数管理)。一个函数由两个部分组成:函数头和函数体。函数头包括返回值类型、函数名称以及形参列表,函数头也称函数原型。函数体为一个复合语句,用一对大括号括起来,由一组语句组成,它完成了函数要完成的具体操作,函数体的最后一条语句必须是return语句。

u  无参数函数的定义

定义无参函数的一般格式为:

<type>  <函数名> ()   

{

   < 函数体 >

 }

其中,type为函数返回值的类型,它必须是M语言定义的函数返回值的类型。函数名称必须符合变量名称构成的规则,通常,函数名应能反映函数的功能。函数体为一个复合语句,用于实现相应的功能,其内包含函数所封装的代码。

当函数仅完成某种固定操作时,可将函数定义为无参函数。在很多情况下都不要求无参函数有返回值,此时函数类型符可以写为void,但是函数语句最后一条语句必须是return语句。例如:

void  change () { return ;}

u  有参数函数的定义

定义有参函数的一般格式为:

< type >  < 函数名 >  (<形参列表>)

{

   <函数体>

}

有参函数比无参函数多了一个内容,即形式参数列表(简称形参列表)。在形参列表中给出的参数称为形式参数,有时简称形参。他们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参列表描述函数的形式参数,形式参数是函数内部的代码和外部交流的渠道,在调用函数时,设置形参的值以给函数内的代码提供必要的信息。形参列表有一个或多个形参说明构成,每个形参说明的格式为:

< 类型 >   < 形参名 >

其中的形参名是形式参数的名,用变量名表示,其格式和定义变量相同,如 int  x。多个形参之间使用逗号分割,如:int  x, float  f。多个相同类型的形式参数,必须单独指定类型。如 int  x, int  y

作为函数体的符号语句中可以使用return语句,并且函数体的最后一条语句必须是return语句,当函数体执行到return语句时,函数立即返回到调用者,return语句的格式为:

return <表达式>;

return;

第一种用于返回值类型不为void的函数的返回控制,其中表达式的值将作为返回值返回给调用者,如果return语句中表达式类型与返回值类型不同,则系统将试图进行类型转换,转换原则是:把表达式的值转换成函数的返回值类型的值。第二种格式用于返回值类型为void的函数的返回控制,此时,函数没有值返回,但是在这样的函数中,函数的最后一条语句也必须是return语句。

例如,求两个整数中的大数,可将函数定义为:

  int  max (int  x, int  y)

{

    if(x >= y)

    {

     return x;

}

else

{

   return y;

}

return 0;

}

    第一行int  max (int  x, int  y)max函数的函数头,max是函数名,其返回函数值是一个整数。形参有两个:x y,他们均为整型量,使用逗号分割。xy的具体值是由主调函数在调用时传送过来的。在{ }中的函数体内,除形参外没有使用其他变量,因此只有语句而没有声明部分。在max函数体中的return语句是把x(y)的值作为函数的值返回给主调函数,而且函数的最后一条语句是return语句。