| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 手撕C语言初阶--函数 -> 正文阅读 |
|
[C++知识库]手撕C语言初阶--函数 |
函数函数是什么数学中我们常见到函数的概念。但是你了解C语言中的函数吗?维基百科中对函数的定义:子程序
其实函数就是可以解决一类问题的解决方法,如果适合我们可以重复使用。 前面学习C语言大家可能习惯把代码都写在main函数内,今天学习了函数之后如果对一类问题的解决会使用重复的代码,我们就可以把这段代码封装成函数,这样即提高了效率又提高了代码的可读性 C语言中函数的分类:
库函数 像上面我们描述的基础功能,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。 那怎么学习库函数呢?
注: 但是库函数必须知道的一个秘密就是:使用库函数,必须包含 #include 对应的头文件。 自定义函数如果库函数能干所有的事情,那还要程序员干什么? 所以更加重要的是自定义函数。 自定义函数和库函数一样,有函数名,返回值类型和函数参数。 但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。 函数的组成:
例如:我们写一个函数来求两个数中的最大值
这个问题对于大家来说肯定是小菜一碟,那我们再来一个问题
大家是不是和我写的一样呢?我们一起来看一看得出的结果: 就比如有两个盒子a,b,a盒子放10,b盒子放20,如果是传值调用,进入函数后会重新再拿两个盒子c,d,c盒子放10,d盒子放20,然后将他们交换,这样其实a和b盒子中的数并没有发生任何变化。 所以在这里如果我们希望传入的参数发生改变,我们就需要进行传址调用
注意:传址调用时对应的参数我们需要用指针来接收 函数的参数实际参数(实参): 形式参数(形参): 上面Swap1和Swap2函数中的参数 x,y,px,py 都是形式参数。在main函数中传给Swap1的num1,num2和传给Swap2函数的&num1,&num2是实际参数。 然后我们对刚才上面的问题进行分析:
函数的调用:传值调用 函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。 传址调用
函数的嵌套调用和链式访问函数和函数之间可以有机的组合的。 函数的嵌套调用
链式访问
函数的声明和定义函数声明:
函数定义:
注:这里的分文件书写的形式我们后面再进行介绍 函数递归 递归的两个必要条件
练习1:接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4
练习2:求第n个斐波那契数。(不考虑溢出)(斐波那契数:即第一个数为 1,第二个数为 1 ,后面的每个数等于前面两个数之和)
我们来验证一下,例如第三个斐波那契数为2,我们输入3 就会出现这种情况,程序运行了很久都没有输出结果,这是为什么呢? 按照递归的思路,我们在求第50个斐波那契数的时候需要算出,第49个和第48个,而在算第49和第48个的时候,需要分别算出48,47和47,46;一直这样循环下去直到算到第一个和第二个,这其中会算很多个重复的数字,所以会算很多次,导致程序运行的时间会很长。 这样计算次数会大大减少,减少了程序运行时间
(注:在计算的数很大时可能会超出类型所能存储的最大范围) 结论:
到这里本章函数的部分就结束了,大家一定要多多练习,多刷刷题,巩固所学到的知识,一起努力,我们下章再见! 多多点赞哦~~ |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:13:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |