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

C语言入门(8/100)

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

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

一、函数定义和声明

1.1 概念

函数定义 :是指函数的具体实现,交代函数的功能实现。
【研0自学100天 —— Day 8 函数定义和声明 】_第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.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;  
    }  
}  

或者将函数定义在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();  
}  
  • 函数的声明格式:
    • 将自定义函数时{}之前的内容拷贝到调用之间即可
    • 例如,
  int max( int a, int b );
  //或者另一种声明格式
 int max( int, int );

示例;

// 函数声明
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);
}

函数声明注意点

  • 函数的实现不能重复, 而函数的声明可以重复
// 函数声明
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. c语言入门这一篇就够了-学习笔记(一万字)

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

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

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

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

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

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

你可能感兴趣的:(研0学习,c语言,学习,笔记,经验分享)