【一起来学C语言】函数(一)

【前言】

         通常一个较大的程序分为若干个程序模块,每个模块都有特定的功能,所有高级语言中都有子程序这个概念,在C语言中,子程序的作用是由函数来完成的,一个C程序可由一个主函数和若干其它函数构成。
         本篇简介函数定义和调用的相关知识。

【函数定义和调用】

   【一起来学C语言】函数(一)

          main函数是C语言不可或缺的重要部分,C程序框架分为两种,单框架只包含一个 main函数,复合框架由一个 main函数和多个子函数构成。
         函数定义就是对函数功能的确立,包括函数名,函数值类型、形参等等,它是一个完整独立的函数单元。定义形式很重要,函数头加函数体是重要标志:
         函数返回值类型 函数名(形式参数列表)
          {
         函数体;
          }

         其中形参说明必须带数据类型,如int max(int x,int y)。
         函数返回值类型分为 void型(不加return)和非void型(一定要加return表达式)
===============================================================
         函数调用对应分为两种类型,非void型和void型。
一、非void型函数调用 形式:变量名=函数名(实参列表);
         调用步骤:出门实参向形参单向传值,保持三一致 :个数、类型、位置次序, return回到被调用处。

二、void型 形式:函数名(实参列表);

         调用步骤:出门实参向形参单向传值,保持三一致。 调用函数结束后回到main中被调用处。


==================================================================
         原型声明
         我们时常需要在一个函数中调用另一个函数,被调用函数是需要有条件的。首先,被调用函数必须已经存在,可以是库函数也可以是用户自定义的函数,调用库函数一定一定要记得用include命令将所需要的信息包含进来。

         当要在main函数中调用用用户自定义的函数时,该函数位置在调用函数main函数的后面,编译时从上向下执行,如果不对系统提前打声招呼,对被调用函数做点声明,编译到被调用函数语句的时候,系统可不认识它,既不确定函数名也不确定实参的类型和个数。


         所以这时就用到了函数声明,提前声明函数类型,参数名,个数等信息,通知给系统,在调用函数时编译系统就能按照声明的格式进行对照检查。可见声明和定义不是一回事儿啊。当然,如果被调用函数出现在主调用函数之前,就不用加声明啦。因为这时候的编译系统已经先知道了已定义函数的相关情况,会根据函数首部提供的信息对函数的调用作正确性检查。
         原型声明就是要给编译系统,交代清楚函数的基本信息。声明写在main函数开头(函数调用语句前),或整个main函数前均可。常用格式如下:
         函数类型 函数名(形参类型1 形参1 ,形参类型2  形参2…);

【小结】

         最后有一个函数定义、调用和原型声明的口诀:
         1.有头有体无分号 ——函数定义
         2.有头有分号 ——原型声明
         3.函数名(实参);——函数调用

       下篇博客将介绍函数和预编译的相关知识,下次见~