• 【研0自学100天 —— Day 8 函数定义和声明 】


    C语言入门(8/100)

    在接触了结构语句等内容后,我们开始学习函数
    Day 8 的学习中,我们对函数的定义声明做一定的补充说明。

    • 函数
      • 函数定义
      • 函数声明

    一、函数定义和声明

    1.1 概念

    函数定义 :是指函数的具体实现,交代函数的功能实现。
    在这里插入图片描述

    函数声明:把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。

    1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。

    2. 函数的声明一般出现在函数的调用之前。要满足先声明后调用。

    3. 函数的声明一般要放在头文件中的。

    注意:对于一些老旧的编译器来说,函数声明是不带参数列表的。

    • 总结:
    • 在设计多文件程序的时候,一般在以.h为结尾的头文件内放置函数的声明,在.c源文件内放置函数的定义。

    1.2 示例

    让我们用一段代码直观地区别函数定义函数声明

    #include  
    int getMax(int, int);  //函数声明
      
    void main() 
    {  
        int t=getMax(12, 21);  
        printf("%d\n", t);  
        getchar();  
    }  
      
    int getMax(int a, int b) //函数定义
    {  
        if (a > b) {  
            return a;  
        }  
        else {  
            return b;  
        }  
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    1.3 注意事项

    • 在C语言中,函数的定义顺序是有讲究的:
      • 默认情况下,只有后面定义的函数才可以调用前面定义过的函数
    • 如果想把函数的定义写在main函数后面,而且main函数能正常调用这些函数,那就必须在main函数的前面进行函数的声明, 否则系统搞不清楚有没有这个函数
      • 系统搞不清楚这个函数接收几个参数
      • 系统搞不清楚这个函数的返回值类型是什么
      • 所以函数声明,就是在函数调用之前告诉系统, 该函数叫什么名称, 该函数接收几个参数, 该函数的返回值类型是什么

    示例:
    使用函数前,需要在main函数前对使用的函数进行声明

    #include  
    int getMax(int, int);  
      
    void main() 
    {  
        int t=getMax(12, 21);  
        printf("%d\n", t);  
        getchar();  
    }  
      
    int getMax(int a, int b) 
    {  
        if (a > b) {  
            return a;  
        }  
        else {  
            return b;  
        }  
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    或者将函数定义在main函数的前面,则不需要声明

    #include  
      
    int getMax(int a, int b) 
    {  
        if (a > b) 
        {  
            return a;  
        }  
        else {  
            return b;  
        }  
    }  
    void main() 
    {  
        int t=getMax(12, 21);  
        printf("%d\n", t);  
        getchar();  
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 函数的声明格式:
      • 将自定义函数时{}之前的内容拷贝到调用之间即可
      • 例如,
      int max( int a, int b );
      //或者另一种声明格式
     int max( int, int );
    
    • 1
    • 2
    • 3

    示例;

    // 函数声明
    void getMax(int v1, int v2);
    int main(int argc, const char * argv[]) 
    {
        getMax(10, 20); // 调用函数
        return 0;
    }
    // 函数实现
    void getMax(int v1, int v2) 
    {
        int max = v1 > v2 ? v1 : v2;
        printf("max = %i\n", max);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    函数声明注意点

    • 函数的实现不能重复, 而函数的声明可以重复
    // 函数声明
    void getMax(int v1, int v2);
    void getMax(int v1, int v2);
    void getMax(int v1, int v2); // 不会报错
    int main(int argc, const char * argv[]) 
    {
        getMax(10, 20); // 调用函数
        return 0;
    }
    // 函数实现
    void getMax(int v1, int v2) 
    {
        int max = v1 > v2 ? v1 : v2;
        printf("max = %i\n", max);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    学习参考对象

    1. c语言入门这一篇就够了-学习笔记(一万字)

    2. 13 万字 C 语言从入门到精通保姆级教程2021 年版

    3. 史上最强C语言教程----函数(1)

    4. C语言函数的定义和声明

    5. C语言程序设计 —— 中国大学mooc

    6. C语言初阶——手把手教零基础/新手入门(万字心得笔记)

    7. 【2023年官方C语言】9小时快速精通C语言,动画讲解C语言视频教程 —— Bilibili

  • 相关阅读:
    647. 回文子串 516.最长回文子序列
    python局部变量与全局变量问题
    次元裂缝已打开,AI绘画突飞猛进,其潜力究竟有多大
    生命不息,分享不止,5款小巧的免费软件
    git 详解-提升篇
    Git上传代码
    NC338 删除升序数组的重复元素
    我的Windows10下的WSL的使用经历
    【PyQt】pyqt加载调用ui界面文件的两种方法
    Spring Boot统一功能处理
  • 原文地址:https://blog.csdn.net/yier_Tsundoku/article/details/132635362