30.【C语言】函数系列下

1.嵌套调用

*定义:函数之间的互相调用

*例:

int function1(int a, int b)
{function2(b);//嵌套函数的调用return a;
}
//注意:不能将function2定义在function1的里面,这不叫嵌套函数的调用
void function2(int c)
{}
#include <stdio.h>
int main()
{int c = 0;int d = 0;int e = 0;function1(c,d);function2(e);return 0;
}

2.链式访问

*定义:将一个函数的返回值作为另外一个函数的参数,像链条一样将函数串起来就是函数
的链式访问

#include <stdio.h>
#include <string.h>
int main()
{printf("%zd", strlen("abc"));return 0;
}

strlen函数的返回值作为printf的参数

练习:求打印结果

#include <stdio.h>
int main()
{printf("%d", printf("%d",printf("%d",123)));return 0;
}

3个printf,由里向外执行

查阅printf的返回值:字符的个数

printf - C++ Reference

打印123,返回3作为参数给printf,打印3返回1作为参数给printf,打印1

结果:12331

3.函数的声明和定义

*单个文件的声明

如果将上述代码上下颠倒

#include <stdio.h>
int main()
{int c = 0;int d = 0;int e = 0;function1(c,d);function2(e);return 0;
}
int function1(int a, int b)
{function2(b);//嵌套函数的调用return a;
}
//注意:不能将function2定义在function1的里面,这不叫嵌套函数的调用
void function2(int c)
{}

编译器报错:

原因:C语言编译器对源代码进行编译的时候,是从第一行往下扫描的,所以函数的调用一定要满足,先声明,后使用(注意区分函数的定义,声明,调用)(函数定义也是特殊的声明)

修改后:

#include <stdio.h>
int function1(int a, int b);//函数的声明,注意加;
void function2(int c);//函数的声明,注意加;
int main()
{int c = 0;int d = 0;int e = 0;function1(c,d);//函数的调用function2(e);//函数的调用return 0;
}
int function1(int a, int b)//函数的定义
{function2(b);//嵌套函数的调用return a;
}
//注意:不能将function2定义在function1的里面,这不叫嵌套函数的调用
void function2(int c)
{}

*多个文件的声明

一般地,函数的声明、类型的声明放在头文件(.h)中,函数的实现是放在源文件(.c)文件中

优点:方便写作;代码隐藏;模块化,代码可复用

test.h

int function1(int a, int b);//函数的声明,注意加;
void function2(int c);//函数的声明,注意加;

function1.c

int function1(int a, int b)//函数的定义
{function2(b);//嵌套函数的调用return a;
}

function2.c

void function2(int c);//函数的声明,注意加;
{int c = 0;int d = 0;int e = 0;function1(c,d);//函数的调用return 0;
}

main.c

#include "test.h"//注意是双引号!
int main()
{int c = 0;int d = 0;int e = 0;function1(c,d);//函数的调用function2(e);//函数的调用return 0;
}

补:引用头文件用< >还是" "的区别

< > 官方提供的库定义

" " 自定义的或项目特定的头文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统安装python3和pip

一、安装python 1、安装依赖环境 yum install gcc -y yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install zlib zlib-devel openssl -y yum install openssl…

学习记录day16—— 数据结构 双向链表 循环链表

双向链表 1、概念 1&#xff09;就是从任意一个节点既能存储其前驱节点&#xff0c;又能存储后继节点 2)结构体中增加一个指向前驱节点的指针 //定义数据类型 typedef int datatype;//定义节点类型 typedef struct Node {union {int len;datatype data;};struct Node *prio; …

[论文笔记] DCA(Dual Chunk Attention)

DCA&#xff08;Dual Chunk Attention&#xff09;是一种在自然语言处理模型中用来处理长文本的技术。传统的注意力机制&#xff08;Attention&#xff09;在处理长文本时可能会遇到效率和性能瓶颈&#xff0c;因为计算每个单词与其他所有单词之间的关系会随着文本长度的增加而…

Nova Admin - 简洁干净、免费开源的后台管理系统,基于Vue3 / Vite5 / Typescript / Naive UI 等前端开发技术栈

今天看到一款 Vue3 后台管理 admin 系统&#xff0c;研究了一下发现很不错&#xff0c;推荐给大家。 Nova-admin 是一个颜值在线&#xff0c;风格清新、简洁干净后台管理模板&#xff0c;包含了平时常用的管理后台功能页面模板。基础的 UI 组件基于我之前推荐的 naive-ui 开发…

【Golang 面试基础题】每日 5 题(六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

HTML前端 盒模型及常见的布局 流式布局 弹性布局 网格布局

CSDN的文章没有“树状目录管理”&#xff0c;所以我在这里整理几篇相关的博客链接。 操作有些麻烦。 CSS 两种盒模型 box-sizing content-box 和 border-box 流式布局 flow layout 弹性布局 flex layout HTML CSS 网格布局 grid layout HTML CSS

百度,有道,谷歌翻译API

API翻译 百度&#xff0c;有道&#xff0c;谷歌API翻译&#xff08;只针对中英相互翻译&#xff09;,其他语言翻译需要对应from&#xff0c;to的code 百度翻译 package fills.tools.translate; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis…

Win11+Anaconda+VScode:mmpose环境配置与基本使用

MMPose 是一款基于 PyTorch 的姿态分析的开源工具箱,是 OpenMMLab 项目的成员之一。 目录 前言 一、mmpose整体框架 二、依赖与安装 从源码安装(推荐) 作为 Python 包安装 三、验证安装 四、使用mmpose处理数据 总结 前言 官方安装手册:欢迎来到 MMPose 中文文档!…

TMS320F28335多级中断及中断响应过程

DSP28335的中断系统设计为多级中断机制&#xff0c;主要包括外设级中断、PIE级中断和CPU级中断。以下是详细的中断使能及响应过程&#xff1a; 1.外设级中断&#xff1a; 当外设产生中断事件时&#xff0c;对应的中断标志寄存器&#xff08;IF&#xff09;的相应位将被自动置…

ABAP+从SAP发出去的PDF文件在第三方系统出现乱码

这是一个 ABAP转换PDF调用函数CALL FUNCTION CONVERT_OTF的问题记录&#xff0c;关乎字体STSong-Light-ldentity-H 和 STSong-Light的区别 背景&#xff1a; 做了一个增强&#xff0c;是采购订单审批后自动发送采购订单PDF1到企业微信&#xff0c;用户再将企业微信收到的P…

C# 代理模式

栏目总目录 概念 代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中&#xff0c;我们创建一个具有现有对象&#xff08;称为“真实对象”或“被代理对象”&#xff09;相同功能的代理对象。代理对象可以在客户端和目标对…

【海康威视】-Java读取监控摄像头实时帧

目录 1、基于JavaCV 1.1、pom依赖 1.2、读取帧Frame 1.3、转换BufferedImage 1.4、完整代码 2、基于Ffmpeg命令 2.1、ffmpeg命令 2.2、读取帧 2.3、转换BufferedImage 2.4、完整代码 1、基于JavaCV 1.1、pom依赖 <dependency><groupId>org.bytedeco<…

最优化理论与方法-第十讲割平面法

文章目录 1. 原问题&#xff1a;2. 割平面法程序步骤2.1 第一次迭代2.2 第二次迭代2.3 第三次迭代 1. 原问题&#xff1a; 给定下列约束优化问题&#xff1a; ( P ) min ⁡ 3 x 1 2 2 x 2 2 s t . − 5 x 1 − 2 x 2 3 ≤ 0 , x ∈ X { x ∈ Z n ∣ 8 x 1 8 x 2 ≥ 1 , 0…

mysql的主从复制和读写分离:

mysql的主从复制和读写分离&#xff1a; 主从复制 面试必问&#xff1a;主从复制的原理 主从复制的模式&#xff1a; 1、mysql的默认模式&#xff1a; 异步模式 主库在更新完事务之后会立即把结果返回给从服务器&#xff0c;并不关心从库是否接受到&#xff0c;以及从库是…

共享存储可以解决FusionCompute哪些问题

共享存储在FusionCompute环境中扮演着至关重要的角色&#xff0c;主要通过提供集中的数据访问点来优化和增强虚拟化基础设施的功能。以下是共享存储在FusionCompute中可以解决的一些关键问题&#xff1a; 虚拟机迁移&#xff1a; 共享存储允许虚拟机&#xff08;VM&#xff09;…

【React】package.json 文件详解

文章目录 一、package.json 文件的基本结构二、package.json 文件的关键字段1. name 和 version2. description3. main4. scripts5. dependencies 和 devDependencies6. repository7. keywords8. author 和 license9. bugs 和 homepage 三、package.json 文件的高级配置1. 配置…

分享一个Springer模板关于论文作者和单位信息的修改范例,以及Applied Intelligence期刊latex模板的下载链接

在这篇文章中&#xff0c;我写一些关于解决springer期刊提供的LaTex模板参考文献格式为作者年份时的顺序问题以及如何在正文中将参考文献格式引用成[1]这种数字格式类似的经验&#xff0c;该篇帖子里还分享了一个大佬关于springer模板完整的修改流程&#xff0c;有需要的伙伴可…

全球电脑蓝屏崩溃,为何中国没事?周鸿祎:因 90% 用 360 软件!

2024 年 7 月 19 日&#xff0c;出现了震惊世界的微软蓝屏事件&#xff0c;全球近千万台 Windows 设备集体蓝屏宕机&#xff01; 这次的事件绝对称得上是 “载入史册”&#xff01;甚至百度百科都专门针对这次的事件出了一个词条、央视新闻也专门报道了此事。 这次事件的影响有…

ActiViz实战:二维纹理贴图vtkTexture

文章目录 一、效果预览二、基本概念三、功能特性四、与C++不同五、完整示例代码一、效果预览 二、基本概念 vtkTexture是VTK(Visualization Toolkit)中用于纹理映射的一个类,它允许用户将二维图像(纹理)贴到三维物体的表面上,从而增加场景的真实感和细节。 纹理映射:是一…

PY32F071单片机,主频最高72兆,资源丰富,有USB,DAC,运放

PY32F071 系列单片机是基于32 位 ARM Cortex-M0 内核的微控制器&#xff0c;宽电压工作范围的 MCU。芯片嵌入高达 128 Kbytes flash 和 16 Kbytes SRAM 存储器&#xff0c;最高72 MHz工作频率。芯片支持串行调试 (SWD)。PY32F071单片机提供了包含了HAL和LL两种不同层次的驱动库…