zoukankan      html  css  js  c++  java
  • 函数

    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);
  • 相关阅读:
    合并两个排序的链表
    把数组排成最小的数
    maven下使用jstl标签(1.2)版本
    SpringMVC5中,@ModelAttribute注解详解
    JavaWeb项目中斜杠(/)表示web工程、webapps的场景
    JavaWeb中jsp路径斜杆(/)跟没斜杆的路径映射问题
    关于Java多线程-interrupt()、interrupted()、isInterrupted()解释
    常见的HTTP状态码
    Java中的String,StringBuilder,StringBuffer三者的区别
    解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题
  • 原文地址:https://www.cnblogs.com/lemongirl/p/7885788.html
Copyright © 2011-2022 走看看