函数

C程序是由函数组成的,函数是程序的基本模块,通过对函数模块的调用实现特定的功能。

函数从定义的角度可分为库函数和用户自定义函数。

  • 库函数:编译器提供的可在C源程序中调用的函数。一类是C语言标准库规定的库函数,一类是编译器提供的库函数。不同的编译系统提供的库函数数目和函数名以及功能并不完全相同。 
  • 用户自定义函数:用户把自己的算法编成一个个相对独立的函数模块,通过调用的方法来使用函数。

    1.函数的一般形式:

     函数类型 函数名(参数类型 参数名)

     {

        函数体;

     }

    1. 函数名是用户定义的标识符,代表函数的首地址。
    2. 函数类型即函数返回值的类型,默认为int型。
    3. 无参函数,函数名的括号中一般为void。

    2.有参有返回值的函数:

    1. 实参可以是常量、变量或表达式。
    2. 在函数被调用之前,形参不占用内存,必须指定形参的类型。
    3. 实参对形参的数据传递是值传递,即单向传递。
    4. 用return语句返回值,不指定函数类型,默认返回整型值。

    3.函数的声明:

    1. C语言编译系统是从上网下编译源文件的。
    2. 被调函数放在主调函数后面,前面就该有声明,不然C由上网下的编译系统将无法识别。
    3. 函数声明是对调用函数的说明,已通知系统在其他函数中所调用的函数是什么类型,并宣告自己的存在。
    4. 函数声明与定义的区别:

       函数定义:是指对函数功能的确定,指定函数名、函数返回值类型、参数类型、参数名、函数体。

       函数声明:只对已定义的函数进行说明,指定函数名、函数返回值类型、参数类型。

      5. 函数声明须注意:

      • 主调函数与被调函数在同一个文件中,若被调函数在主调函数之前定义,可以不用声明。
      • 主调函数与被调函数不在同一个文件中,调用前必须进行函数声明,加入关键字extern。
      • 库函数的声明:使用库函数必须包含相应的头文件。
      • 一个函数只能被定义一次,但可以声明多次。
      • 变量声明时不能进行初始化。
      • 声明时必须在末尾加上分号“;”。

    4.多文件函数:将不同功能的函数单独分开,在相应的源文件中定义,在需要的时候,把它与主调函数的主程序代码一起编译,达到代码重用的效果。

      不同文件的声明有两种方式:直接声明法、头文件声明法。

      直接声明法:把函数声明直接放在每个使用该函数的源文件中,函数调用简单时建议使用。    


 

main.c
#include <stdio.h>
extern int max(int x,int y);
extern int min(int x,int y);
int main(int argc, char *argv[])
{
    int a = 10,b = 20,max_num,min_num;
    max_num = max(a,b);
    min_num = min(a,b);
    printf("max_num = %d\n",max_num);
    printf("min_num = %d\n",min_num);
    return 0;  
}    
fun.c
int max(int x,int y)
{
    return x>y?x:y;      
}
int min(int x,int y)
{
    return x<y?x:y;  
}

 

    头文件声明法:把函数声明放在头文件中,在主函数中包含相应的头文件,函数调用关系复杂时推荐使用。

main.c
#include <stdio.h>
#include "fun.h"
int main(int argc, char *argv[])
{
    int a = 10,b = 20,max_num,min_num;
    max_num = max(a,b);
    min_num = min(a,b);
    printf("max_num = %d\n",max_num);
    printf("min_num = %d\n",min_num);
    return 0;  
}    
fun.c
int max(int x,int y)
{
    return x>y?x:y;      
}
int min(int x,int y)
{
    return x<y?x:y;  
}
fun.h
extern int max(int x,int y);
extern int min(int x,int y);

 

posted @ 2017-11-23 16:58  lemongirl  阅读(179)  评论(0编辑  收藏  举报