当前位置: 首页 > java >正文

C语言-函数的嵌套调用,链式访问,函数的声明和函数的定义

以下是我初学C语言的笔记记录,欢迎在评论区留言补充

一,函数的嵌套

一个函数嵌套另一个函数的调用

【注意】

(1)不能在一个函数中再定义一个函数,只能在一个函数中调用一个函数;

(2)函数的位置都是平等的,所以可以嵌套调用,但是不能嵌套定义

//函数的嵌套调用
#include<stdio.h>
void test1()
{printf("hhh\n");}
void test2()
{int i = 0;for (i = 1; i <= 3; i++){test1(); //函数的调用}
}
int main()
{test2();return 0;
}

二,函数的链式访问

(1)什么是链式访问?

链式访问像一个串条,将函数串起来,需要用到返回值,返回值给到一个函数;

一个函数的返回值作为另一个函数的参数

 

为什么结果是4321?

【毫无疑问,橙色输出结果为43,即43以%d的形式打印,而绿色表示的含义是将橙色的结果以%d打印,即printf的返回值以%d的形式打印,而printf的返回值为输出内容的总个数,所以,绿色部分输出为2,同理,蓝色输出为1】

三,函数的声明和定义

(1)什么是函数的声明,什么时候用它?

一般情况下,自定义函数写在main函数前,而且编译器是从上到下进行扫描,进行执行代码的,如果把自定义函数写在main函数的后面,那么,在调用函数,并且程序执行的时候,就不知道自定义函数的位置在哪里,虽然后面可以扫描到,但是会出现警告,这个时候,就用到了函数的声明【函数的返回类型,函数名,形参类型】写在main函数前就可以;

#include<stdio.h>
int Add(int, int);//函数的声明
//返回值类型,函数名,形参类型,至于x,y写不写上都可以
int main()
{int i = 0;int j = 0;int sum = 0;sum = Add(3, 4);printf("%d", sum);return 0;
}int Add(int x, int y)
{return x + y;
}

(2)函数的声明格式

只需要有返回值类型,函数名,形参类型

(3)函数的声明可以放在头文件中

一来,可以模块化方便管理,二来,可以对自己写的函数代码进行了一个保护;

将函数声明放在头文件中,其实相当于是将函数声明拷贝一份在头文件中

(4)函数的声明注意点

告诉我有这么一个函数,但是声明是声明,具体有没有这么一个函数,关键是,是否进行了函数的定义

(5)什么是函数的定义?

函数的定义就是创建一个自定义函数;

比如下面的Add函数

#include<stdio.h>
int Add(int, int);//函数的声明
//返回值类型,函数名,形参类型,至于x,y写不写上都可以
int main()
{int i = 0;int j = 0;int sum = 0;sum = Add(3, 4);printf("%d", sum);return 0;
}//函数的定义
int Add(int x, int y) 
{return x + y;
}

【琐碎记录】

*  函数不写返回值的时候,默认返回类型是int;

*  本质上main函数是有参数的,且有三个参数;

*  自定义的头文件要用“”;库函数的头文件要用<>;

 * 先声明后使用 ;

http://www.xdnf.cn/news/2678.html

相关文章:

  • Python数据结构与算法(5)——动态规划
  • CUDA 编程相关的开源库
  • 【深度学习】评估模型复杂度:GFLOPs与Params详解
  • 人脑、深思考大模型与其他大模型的区别科普
  • Kubernetes》》k8s》》Taint 污点、Toleration容忍度
  • 香橙派打包qt文件报错“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案
  • ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
  • 【Spark入门】Spark RDD基础:转换与动作操作深度解析
  • vr全景相机如何选择?
  • Android Studio学习记录1
  • Python(15)迭代器和生成器
  • IP SSL证书常见问题:快速实现HTTPS加密
  • 使用Docker安装Harbor
  • MCP 模型上下文协议配置MCP Server开发实践
  • android录音生成wav
  • Spring Boot定时任务
  • 深入浅出JavaScript常见设计模式:从原理到实战(2)
  • 一文读懂Tomcat应用之 CentOS安装部署Tomcat服务
  • rabbitmq-集群部署
  • 当所有人都用上先进ai,如何保持你的优势?
  • 用Postman验证IAM Token的实际操作
  • Error和Exception的区别
  • 第9讲:坐标轴美学深度优化——刻度线、网格线与边框控制
  • mapbox V3 新特性,室内楼层多层同时三维展示(可单层切换),类似蜂鸟视图效果
  • 深度学习任务评估指标
  • 从普查到防控:ArcGIS洪水灾害全流程分析技术实战——十大专题覆盖风险区划/淹没制图/水文分析/洪水分析/淹没分析/项目交流,攻克防洪决策数据瓶颈!
  • QT:自定义ComboBox
  • 自动驾驶领域专业词汇(专业术语)整理
  • leetcode 206. 反转链表
  • 湖北理元理律师事务所:债务管理领域的平台化创新探索