C语言从入门到精通第13天(函数的调用)

2023-05-16

函数的调用

  • 无参函数的调用
  • 有参函数的调用
  • 函数的嵌套调用
  • 递归函数的调用
  • 函数的声明

函数在定义完以后,如果不被调用时不会被执行到的;在程序中main函数是主函数,是会被自动调用,C程序有且只有一个main函数。

无参函数的调用

调用方法:

函数名();
或者
变量 = 函数名();

如:

int func(){
    printf("hello\n");
    return 0;
}

int main() {
    // 调用一个无参函数
    func();
	
	// 函数是int类型,所以接收的变量的数据类型也为int
    int a = func();

    printf("%d",a);
    return 0;
}

这里需要注意的是,如果我们采用定义变量的方式来调用函数,当函数有返回值时,我们定义的这个变量的类型必须和函数的返回值是一致的。

有参函数的调用

调用方法:

函数名(实参列表)
或者
变量 = 函数名(实参列表)

如:

int func(int b, int c){
    printf("%d %d\n",b,c);
    return 0;
}

int main() {
    // 调用一个有参函数
    func(1,2);
    
    // 变量的类型和函数类型一致
    int a = func(1,2);

    printf("%d",a);
    return 0;
}

这里需要注意的是在函数调用时的实参个数必须和形参个数一样,并且类型也必须一致。

函数的嵌套调用

函数的嵌套调用指的是,某个函数在另一个函数中被调用。

代码如下:

int b()
{
    printf("b\n");
    return 0;
}
int a()
{
    printf("a\n");
    b();
    return 0;
}
int main()
{
    a();
    return 0;
}

他调用逻辑如下图::
在这里插入图片描述

首先函数从主函数main开始,在main函数中调用了a函数,此时我们进入a函数中,先输出a,然后调用b,需要注意的是a函数的调用还没有结束,此时再进入b函数,输出b,然后b函数运行return 0 语句,此时b函数的运行就结束了,然后回到a中执行return 0语句,此时a函数就运行完毕了,最后再回到main函数中执行return 0语句,到这个时候函数的嵌套调用就执行完毕了。

递归函数的调用

递归函数的作用是重复调用函数本身,直到满足条件,然后终止调用。最经典的例子就是斐波那契数列,代码如下:

// 定义函数
int f(int n){
    if(n==1)
        return 1;
    return f(n-1)*n;
}

int main(){
    int a = f(3);
    printf("%d",a);
    return 0;
}

此时当我们调用f(3)时,函数返回f(2)*3,函数没有结束,返回的f(2)继续调用,返回f(1)*2,此时进行条件判断,n==1,f(1) == 1,然后函数再一次返回f(2) == 2,f(3)==f(2)*3==6,将求得的值返回给变量a ,输出a值为6。

函数的声明

再上面我们都只涉及到了一个函数,如果面对多个函数时,我们该怎么去定义和调用呢?例如:

int a(){
    
    // 此时语句报错
    b();
    return 0;
}
int b(){
    printf("hello");
    return 0;
}

再定义时我们如果不按照先后顺序进行定义的函数编译器直接就报错,如果再遇到很多的函数定义时,又出现嵌套调用,我们一个一个去查看定义函数的先后顺序,这样就非常的麻烦,此时我们可以使用函数的声明。他的语法格式如下:

函数类型 函数名(形参列表);

需要注意的是这里的函数的定义,必须与函数定义时的返回值类型、函数名、形参列表一致,形参列表可以不填写变量名字,只需要填写形参的类型即可。如:int func(int,float);

此时我们还是像上面一样定义就不会报错了:

int a();
// 声明函数的形参列表中不带有变量
int b(int);

int a(){

    // 此时语句报错
    b(3);
    return 0;
}
int b(int a){

    printf("hello %d",a);
    return 0;
}
int main(){
    a();
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言从入门到精通第13天(函数的调用) 的相关文章

  • 0基础学springboot之对数据库的增删改查

    1 xff1a 使用的是mysql数据库 xff0c 数据库中的表为student 2 xff1a 创建springboot项目 xff0c 在pom文件里加载mysql依赖 lt dependency gt lt groupId gt m
  • 平衡车Car_Balance(一)——电机

    目录 一 电机简要概述 二 常见电机种类 1 直流有刷电机 xff08 BDC xff0c 最最最常见的电机 xff09 2 直流无刷电机 xff08 BLDC xff09 3 舵机 4 步进电机 三 平衡小车选用电机及需要关注的参数 1
  • 用matlab进行xlsx表格的提取和操作

    用matlab进行xlsx表格的提取和操作 一 数据的提取二 垃圾数据的清除三 数据的分类四 图像的绘制 在学习数学建模时 xff0c 我们会碰到大数据的问题 xff0c 这类问题通常要进行数据预处理 xff0c 这是我用matlab进行预
  • Android 开发艺术探索笔记(5,我的头条面试经历分享

    public Messenger Handler target mTarget 61 target getIMessenger public Messenger IBinder target mTarget 61 IMessenger St
  • 穿越机F4飞控F405代码pcb文件,原理图

    穿越机F4飞控F405代码pcb文件 原理图 xff0c 源代码 xff0c 穿越机无人机 xff0c F4V3飞控PCB资料 xff0c AD格式原理图 PCB图 Bo可直接打板id 61 659104114509 amp
  • 【AD20学习笔记】网表导入及模块化布局设计(1)

    7 20 今天写完 本章快捷键总结 xff08 绿色是自己设的 xff09 Q可以切换单位 xff08 但是要右击按着欸 xff0c 有一定失败概率 xff09 JC可以查元件位号 F6可以进行矩形的元件摆放 按shift 是可以多选 TM
  • 【五一创作】微服务学习笔记

    微服务学习 写一个服务的步骤一般可以有 1 xff0c 在pom xml文件中导入相关的依赖 2 xff0c 编写相关的配置类 xff08 application yml xff09 配置类编写的三步 1 服务的端口 2 服务的名字 3 服
  • Win10启动或关闭windows功能,一直显示“请稍后”该怎么办?(win10请稍后)

    解决方法一 xff1a 1 按下 Win 43 R 组合键呼出运行 xff0c 输入 xff1a services msc 点击确定打开服务 xff1b 2 在服务界面中双击打开 Windows Modules Installer xff0
  • ROS2 CmakeList如何正确引入第三方.so文件

    在使用ros2开发的时候难免会需要引入第三方的厂家提供的 so文件库 注意这里说的并不是自己写的cpp文件转成 so然后再自己的工程项目中使用 例如经常使用的ICANCmd h头文件和libCanCmd so库还有onnx推理的时候onnx
  • 实战篇 | 基于freeRTOS的多任务事件传输

    之前分享了很多关于freeRTOS的知识 xff0c 那么我们怎么在实战中去写代码呢 xff1f 本篇文章重在对基于freeRTOS的架构代码的解析 整个功能如下图 xff1a 为什么要用freeRTOS 在实际项目中 xff0c 如果程序
  • 浅谈安卓UI设计,android串口工具apk

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt android support constraint ConstraintLayout xmlns android 61 h
  • 四轴飞行器-基于STM32微控制器(电子入门必看)

    nbsp nbsp nbsp nbsp nbsp nbsp 从开始做微型多旋翼飞行器以来 我经常和一大批有着同样爱好的朋友们互相交流 他们走着我曾经走过的路 也经历着我所经历过的坎坷 无论我在何坛何群 总有朋友追问着很多重复的问题 未能全部
  • 基于stm32cubeMX的平衡小车HAL库+蓝牙遥控+直立环+速度环+转向环 STM32F103C8T6

    基于stm32cubeMX的平衡小车HAL库 蓝牙遥控 直立环 速度环 转向环 一 代码工程链接 我的平衡车代码 HAL库 cubeMX配置 主控stm32f103 程序代码容易移植 建议先看完正文 工程 平衡车工程 PCB 代码程序 蓝牙
  • Java日常学习:运用链栈实现进制转换

    一 简单介绍 今天我就给大家带来java中的链栈实现进制转换的方法 xff0c 该方法也是在学习栈的时候发现的 xff0c 我们都知道在进制转换的时候有很多种方法 xff0c 其中最常用也最容易理解的就是除基倒取余法 xff0c 那么我们先
  • CLion解决中文输出乱码(2022年最新教程)

    CLion是个很好用的IDE xff0c 但是在用CLion写C C 43 43 代码时 xff0c 中文输出会是乱码 xff0c 此前博主也找了很多资料 xff0c 但是网上的教程大多都是脱裤子放屁 xff0c 治标不治本 xff0c 在
  • 【Linux网络编程】TCP并发服务器的实现(IO多路复用select)

    文章目录 一 服务器模型1 1 服务器概念1 2 TCP并发服务器的意义1 3 实现TCP并发服务器的方式 二 使用IO多路复用实现TCP并发服务器优势三 select函数四 TCP并发服务器的构建4 1 创建套接字4 2 填写服务器网络信
  • 树莓派解决cannot currently show the desktop最优法

    最近在搞树莓派前面的步骤都轻轻松松的解决了这个问题卡了我很久 这个是解决之后的效果 xff0c 我使用改分辨率用了很多办法这个办法解决的效率最快 直接在下载好文件的解决 1 将有sd卡的读卡器插入 2 在config txt文件中加入四句话
  • 十、C++中的类 class与struct的区别

    面向对象程序设计 xff0c 需要诸如类和对象这样的概念 C 43 43 支持面向过程 基于对象 面向对象 泛型编程四种 C语言不支持面向对象编程 类是一种将数据和函数组织在一起的方式 一个函数参数过多 xff0c 代码不好维护 xff0c
  • 飞控开发--气压计MS5611

    ms5611简介 xff1a 官方给出的最大分辨率 xff1a 10cm 工作电压 xff1a 1 8v 3 6v 气压 AD 精度 xff1a 24位 工作环境 xff1a xff0d 40 43 85 C xff0c 10 1200mb
  • 如何使用JavaScript将Set转换为Array?

    如何使用JavaScript将Set转换为Array xff1f 下面本篇文章家里给大家介绍一下在JavaScript中将Set转换为Array的方法 xff0c 希望对大家有所帮助 在JavaScript中 xff0c 想要将Set xf

随机推荐

  • 如何在Markdown中插入图片并顺利共享

    使用PicGo 43 GitHub搭建图床 实现便捷的Markdown图片管理 昨天在呕心沥血写 xff08 搬 xff09 完我的第一篇技术分享博文m1 使用 VMware 安装 CentOS7 并部署 k8s 高可用集群之后 xff0c
  • 海康威视网络摄像头sdk的开发(Demo的使用)指南

    如果您是想实现海康sdk包的Demo实例中MFC的分功能 xff0c 那么请慢慢看 xff0c 这篇文章百分之九十九可以帮你实现 提醒 xff1a 内容来自网络和自己实际操作 xff0c 如有问题请联系hww168 64 yeah net
  • Proxy反向代理解决跨域问题

    一 问题的产生 在项目开发过程中遇到了一个问题 xff0c 访问图片与访问其他的数据的服务器不是同一个 xff0c 虽然后台已经将两个服务器合并到一个 xff0c 但是前台配置好后访问就会产生了一个问题 xff0c 具体报错如下 xff1a
  • 什么是枚举【详解】

    本期介绍 x1f356 主要介绍 xff1a 什么是枚举 xff0c 枚举是如何定义 初始化的 xff0c 以及枚举到底如何使用 xff0c 还有枚举这种语法存在的优点有那些 x1f440 文章目录 一 什么是枚举 x1f356 二 枚举类
  • vscode将项目导入远程仓库 git

    1 打开软件 点击第三个图标 远程仓库 点击代码管理右上角三个小点 远程 远程仓库 添加远程存储库 跳出输入框 2 复制git的地址 3 将上一步复制的仓库链接 粘贴进去 回车 4 命名 5 打开命令行 输入下列命令 用户名 邮箱 PS D
  • 深度学习二

    BT神经元为按照误 差逆向传播算法训练的多层前馈神经网络 BT神经网络分为输入层 隐藏层 输出层 输入层一般有数据种类多个神经元 xff0c 接受数据 隐藏层的神经元为根号下隐藏层 输出层加b个 xff0c 输入的每个数据加权和返回数之和为
  • ROS学习(五)

    学习古月 ROS机器人开发实践 一书时 xff0c 在第六章的6 3遇到的问题的总结 在执行将xacro文件转化成urdf的文件格式时 xff0c 执行语句 rosrun xacro xacro py mrobot urdf xacro g
  • 新建Mavlink消息

    1 下载Mavlink生成器 1 1 Git clone 需要在翻墙的网络环境下下载 span class token function git span clone https github com mavlink mavlink git
  • Python从入门到精通11天(lambda匿名函数和map函数的使用)

    lambda匿名函数和map函数的使用 lambda匿名函数map函数lambda与map的联用 lambda匿名函数 匿名函数在计算机编程中是指一类无需定义标识符 xff08 函数名 xff09 的函数或子程序 xff0c lambda函
  • STM32F407单片机移植ADS1115驱动程序

    最近一个工程项目需要使用ADS1115采集电压 xff0c 网上研究了一下 xff0c 测试成功 xff0c 期间走了很多弯路 xff0c 为避免后来的研究者重走我的老路 xff0c 特分享给大家 注 xff1a 网上很多ADS1115驱动
  • Python入门到精通12天(迭代器与生成器)

    迭代器与生成器 迭代器生成器 迭代器 迭代器是可迭代的对象 xff0c 即可以进行遍历的对象 列表 字符串 元组 字典和集合这些都是可迭代的对象 xff0c 都可以进行遍历 迭代器是一种访问序列元素的方式 xff0c 它可以通过next 函
  • C语言从入门到精通第8天(分支结构if、else、switch的使用)

    分支结构if else switch的使用 if语句if else语句if else嵌套if else if else语句switch语句 if语句 语法 xff1a if 表达式 语句 xff1b 如果表达式为真 xff0c 则执行 里面
  • Python入门到精通13天(global和nonlocal关键字的使用)

    global和nonlocal关键字的使用 作用域global关键字的使用nonlocal关键字的使用 作用域 在Python中变量的作用域由其代码块决定 xff0c 在代码块中定义的的变量和函数属于局部作用域 xff1b 在函数中定义的变
  • Python从入门到精通14天(eval、literal_eval、exec函数的使用)

    eval literal eval exec函数的使用 eval函数literal eval函数exec函数三者的区别 eval函数 eval 是Python中的内置函数 xff0c 它可以将一个字符串作为参数 xff0c 并将该字符串作为
  • Python从入门到精通15天(浅拷贝和深拷贝)

    浅拷贝和深拷贝 深浅拷贝概述浅拷贝深拷贝 深浅拷贝概述 在Python中 xff0c 对象是通过引用传递的 xff0c 这意味如果创建了一个对象 xff0c 然后将其赋值给另一个变量 xff0c 那么两个变量将引用同一个对象 xff0c 即
  • C语言从入门到精通第9天(循环结构的使用)

    循环结构的使用 while语句do while语句for语句嵌套循环 循环结构可以重复的执行一段代码块 xff0c 在C语言中提供了三种不同类型的循环结构 xff1a for while和do while while语句 语法 xff1a
  • C语言从入门到精通第10天(break和continue的使用)

    break和continue的使用 break语句continue语句 break和continue是两种控制流程的语句 xff0c 他们只能在循环中被使用 xff0c 用于控制循环的执行 如果在非循环中被使用了则会导致语法的错误 brea
  • C语言从入门到精通第11天(数组的基本操作)

    数组的基本操作 数组的概念一维数组二维数组 数组的概念 在程序设计中 xff0c 为了方便处理数据把具有相同类型的若干变量按有序形式集合在一起 xff0c 这些按序排列的同类数据元素的集合称为数组 在C语言中 xff0c 数组属于构造数据类
  • C语言从入门到精通第12天(函数的定义)

    函数的定义 函数的概念函数的定义函数的参数函数的返回值 函数的概念 在程序设计中 xff0c 为了实现某个功能需要编写多行代码 xff0c 我们每次在使用时都将原来的代码重复编码 xff0c 这样就非常的麻烦 xff0c 而且编程的效率也不
  • C语言从入门到精通第13天(函数的调用)

    函数的调用 无参函数的调用有参函数的调用函数的嵌套调用递归函数的调用函数的声明 函数在定义完以后 xff0c 如果不被调用时不会被执行到的 xff1b 在程序中main函数是主函数 xff0c 是会被自动调用 xff0c C程序有且只有一个