【C语言—零基础第九课】函数中的爱恨情仇

简介: 我们举个例子,你现在是老板你要求你的秘书去完成一项任务你可以给他说让他去做某一项任务,也可以不给他说让他去做某一项任务(暗示他)当然你得是老板。只要你是老板你就可以无限次的让秘书去做某一项任务,并且他没有怨言。


目录

什么是函数

函数的定义

函数的声明

函数的返回值

函数的参数

函数的调用

参数调用

递归调用

函数的值传递


什么是函数

我们举个例子,你现在是老板你要求你的秘书去完成一项任务你可以给他说让他去做某一项任务,也可以不给他说让他去做某一项任务(暗示他)当然你得是老板。只要你是老板你就可以无限次的让秘书去做某一项任务,并且他没有怨言。

我们看一下函数的文字定义

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。

函数的定义

函数定义的格式:

返回值类型 函数名 (参数,参数,……)

{

执行语句

}

#include<stdio.h>
void fun (){
    printf("HelloWold");
}
int main(){
  fun();
  return 0;
}

image.gif

注意:

1.函数应该先定义后使用

2.C源程序开始于主函数,结束于主函数。(主函数就是main函数)

3.实参负责传递,形参负责接受,函数调用时将实参赋予给对应的形参

实参也就是实际参数,形参也就是形式参数。

实际参数在主函数中,进入调用的函数就不可以使用了。就需要传递形参了,形参数的作用域是被调用的这个函数内,出了这个函数便不起作用了。形式参数无法改变实际参数的值。

注意:函数可以嵌套调用,但是不可以嵌套调用

函数的声明

函数应先定义后调用,如果函数的调用出现在定义之前,则要对函数进行声明。

#include<stdio.h>
void fun();//函数的声明 
int main(){
  fun();
  return 0;
}
void fun (){
    printf("HelloWold");
}

image.gif

函数的返回值

有返回值

形式1 : return(表达式)

#include<stdio.h>
int fun();//函数的声明 
int main(){
 printf("%d",fun()) ;
  return 0;
}
int fun (){
    return (1+2);
}

image.gif

形式2 :return 表达式;

#include<stdio.h>
int fun();//函数的声明 
int main(){
 printf("%d",fun()) ;
  return 0;
}
int fun (){
    return 3+2;
}

image.gif

形式3 :通过return 语句,函数只能返回一个值

#include<stdio.h>
int fun();//函数的声明 
int main(){
 printf("%d",fun()) ;
  return 0;
}
int fun (){
    return 10;
}

image.gif

默认返回值类型是int类型

无返回值 void

#include<stdio.h>
void fun();//函数的声明 
int main(){
  fun();
  return 0;
}
void fun (){
    printf("HelloWold");
}

image.gif

注意

void定义的函数体内不能有return语句

void定义的函数不能拿来给变量赋值

返回值指return后边的值


函数的参数

函数的分类:

形参:定义函数时的形参

实参:调用函数时的参数

参数的传递

    1. 实参单向传递给形参数
    2. 实参,形参类型顺序个数一一对应
    3. 形参定义时不占用空间,调用时系统分配空间

    函数的调用

    函数的调用格式

    1.语句调用

    Fun(x,y);

    2.表达式调用

    A=fun(x,y);

    参数调用

    将函数的返回值作为实参进行调用,称为函数的参数调用

    #include<stdio.h>
    int fun (int x,int y){
        return y-x;
    } 
    int main(){
      int a=10,b=5;
     printf("%d",fun(a,fun(a,b))) ;
      return 0;
    }

    image.gif

    递归调用

    递归条件:

    1.函数主要的功能

    2.明确的结束条件

    3.找出函数的等价关系式

    #include<stdio.h>
    int fun (int x){
      if(x==1){//结束条件
        return 1;
      }
      return  x+fun(x-1); //函数关系
    } 
    int main(){
     printf("%d",fun(10));
    }

    image.gif

    函数的值传递

    函数的参数传递分为地址传递(指针会说到)和值传递

    注意:

    实参的类型可以与实参类型不一致,以形参类型为准

    实参与形参各占不用的存储单元

    形参需单独定义,属于临时变量,调用时为其分配存储单元,函数调用结束后释放其存储单元。

    函数默认的类型为int型,可省略。

    函数返回值的类型是由定义函数时的返回值类型决定的。

    🌷给小伙伴们推荐个学习、刷题的网站?

    🍓🍓各种面试题应有尽有,刷题刷到你手软

    🥂🥂🥂各种互联网学习资料,各个大厂面试真题从零基础开始学习,帮你轻松应对各类面试题目,快来充实一下自己吧!

    点击我🐱‍🏍开始注册🐂 学习、刷题


    目录
    相关文章
    |
    29天前
    |
    存储 C语言
    【C语言函数】static和extern关键字修饰
    【C语言函数】static和extern关键字修饰
    |
    2天前
    |
    存储 C语言
    C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
    本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
    |
    2天前
    |
    存储 C语言
    C语言程序设计核心详解 第七章 函数和预编译命令
    本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
    |
    8天前
    |
    Linux C语言
    C语言 多进程编程(三)信号处理方式和自定义处理函数
    本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
    |
    8天前
    |
    C语言
    C语言 字符串操作函数
    本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
    |
    9天前
    |
    SQL 关系型数据库 C语言
    PostgreSQL SQL扩展 ---- C语言函数(三)
    可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
    |
    23天前
    |
    C语言
    【C语言】字符串及其函数速览
    【C语言】字符串及其函数速览
    21 4
    |
    24天前
    |
    编译器 程序员 C语言
    【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
    ⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
    |
    27天前
    |
    测试技术 C语言
    C语言中的void函数
    C语言中的void函数
    |
    27天前
    |
    存储 安全 编译器
    C语言中的scanf函数
    C语言中的scanf函数