【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型,可省略。

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

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

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

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

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


    目录
    相关文章
    |
    26天前
    |
    C语言 C++
    C语言 之 内存函数
    C语言 之 内存函数
    31 3
    |
    17天前
    |
    存储 缓存 C语言
    【c语言】简单的算术操作符、输入输出函数
    本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
    31 10
    |
    10天前
    |
    存储 算法 程序员
    C语言:库函数
    C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
    |
    16天前
    |
    机器学习/深度学习 C语言
    【c语言】一篇文章搞懂函数递归
    本文详细介绍了函数递归的概念、思想及其限制条件,并通过求阶乘、打印整数每一位和求斐波那契数等实例,展示了递归的应用。递归的核心在于将大问题分解为小问题,但需注意递归可能导致效率低下和栈溢出的问题。文章最后总结了递归的优缺点,提醒读者在实际编程中合理使用递归。
    41 7
    |
    16天前
    |
    存储 编译器 程序员
    【c语言】函数
    本文介绍了C语言中函数的基本概念,包括库函数和自定义函数的定义、使用及示例。库函数如`printf`和`scanf`,通过包含相应的头文件即可使用。自定义函数需指定返回类型、函数名、形式参数等。文中还探讨了函数的调用、形参与实参的区别、return语句的用法、函数嵌套调用、链式访问以及static关键字对变量和函数的影响,强调了static如何改变变量的生命周期和作用域,以及函数的可见性。
    25 4
    |
    21天前
    |
    存储 编译器 C语言
    C语言函数的定义与函数的声明的区别
    C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
    |
    27天前
    |
    C语言
    c语言回顾-函数递归(上)
    c语言回顾-函数递归(上)
    31 2
    |
    29天前
    |
    Java 编译器 C语言
    【一步一步了解Java系列】:Java中的方法对标C语言中的函数
    【一步一步了解Java系列】:Java中的方法对标C语言中的函数
    19 3
    |
    1月前
    |
    存储 程序员 编译器
    C语言——动态内存管理与内存操作函数
    C语言——动态内存管理与内存操作函数
    |
    1月前
    |
    C语言
    C语言字符(串)函数
    C语言字符(串)函数