文章目录:

  • 一、函数是什么?
  • 二、库函数
    • 2.1 为什么要有库函数?
    • 2.2 如何学习库函数?
    • 2.3 我们就以 strcpy( ) 函数,来参照文档自学一下:
    • 2.4 总结:
  • 三、自定义函数
    • 3.1 函数的组成:
    • 3.2 我们举个例子:
  • 四、函数的参数
    • 4.1 实际参数(实参):
    • 4.2 形式参数(形参):
  • 五、函数的调用
    • 传值调用:
    • 传址调用:
    • 练习题:
      • 1. 写一个函数可以判断一个是是不是素数。
      • 2. 写一个函数判断一年是不是闰年。
      • 3. 写一个函数,实现一个整形有序数组的二分查找。
      • 4. 写一个函数,每调用一次这个函数,就会将num的值增加1。
  • 六、函数的嵌套调用和链式访问
    • 嵌套调用
    • 链式访问
  • 七、函数的声明和定义
    • 函数声明:
    • 函数定义:
    • 随便举个例子:
  • 八、函数的递归
    • 什么是递归?
    • 递归的两个必要条件。
    • 练习题1:
      • 图解:
    • 练习题2:
      • 图解:
    • 练习题3:
    • 练习题4:
    • 递归总结:

一、函数是什么?

数学中有函数的概念,C语言中也有函数的概念。但是你了解C语言中的函数吗?

  • 在计算机科学中,子程序是一个大型程序中的某个部分代码,由一个或者多个语句块组成。它负责完成某项特定任务,而且相比于其他代码,具备相对的独立性。
  • 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。
  • C语言中函数的分类:库函数和自定义函数。

二、库函数

2.1 为什么要有库函数?

  1. 我们在编写程序的时候,想看一下输出到屏幕上的结果。这个时候我们会频繁的调用一个函数来帮我们完成输出任务:将信息按照一定的格式打印到屏幕上(printf)。
  2. 在编程的时候,我们会频繁的做一些字符串的拷贝工作(strcpy)。
  3. 我们在编程的时候,也会涉及到数学计算,其中就会有计算 n 的 k 次方这样的运算(pow)。

像我们上述提及的函数方法,都不是业务代码。而是C语言中为了方便程序员开发,为了提高程序效率和支持可移植性,提供的库函数。

2.2 如何学习库函数?

这里我们简单的看看: www.cplusplus.com.


简单的总结:C语言中常用的库函数有:

  • IO 函数
  • 字符串操作函数
  • 字符操作函数
  • 内存操作函数
  • 时间 / 日期函数
  • 数学函数
  • 其他库函数

2.3 我们就以 strcpy( ) 函数,来参照文档自学一下:

第一步:打开网址,在上面空格内输入 strcpy

第二步:查看库函数的结构和英文注释


第三步:鼠标下滑,可以看到Example

第四步:自行代码演示操作一下

2.4 总结:

  1. 使用库函数,不要忘记要 #include 引用头文件。
  2. 库函数有很多,我们不能全部记住,这个时候我们要学会如何查询库函数,如何从文档中学习库函数。

库函数查询工具:

MSDN(Microsoft Developer Network)

www.cplusplus.com

http://en.cppreference.com


三、自定义函数

如果库函数可以把程序开发所有任务都完成,那还需要程序员做什么?

所有更加重要的是自定义函数

自定义函数和库函数一样,都有函数名,返回值类型和函数参数。但不一样的是,这些都是我们自己来设计的,这就给程序员很大的发挥空间。

3.1 函数的组成:

ret_type   fun_name(para1, * )
{statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1   函数参数

3.2 我们举个例子:

  1. 写一个计算两个数据最大值的函数:
//自定义函数设计
int getMax(int n1,int n2) {return n1 > n2 ? n1 : n2;
}int main() {//自定义函数int num1 = 10;int num2 = 20;int max = getMax(num1,num2);printf("%d\n", max);return 0;
}


再来一个例子:

  1. 写一个可以交换两个整型变量的函数:
void Swap1(int n1,int n2) {int temp = n1;n1 = n2;n2 = temp;
}
void Swap2(int* a,int* b) {int temp = *a;*a = *b;*b = temp;
}int main() {//自定义函数int num1 = 10;int num2 = 20;Swap1(num1,num2);printf("%d,%d\n", num1, num2);Swap2(&num1, &num2);printf("%d,%d\n", num1,num2);return 0;
}

输出结果:

第一个printf 打印的数据没有交换,第二个 printf 打印的数据有交换。这是为什么呢?

那让我们来调试一下程序,找一下原因:

这里是 Swap1 函数,我们可以看到 main 函数中的 num1 和 num2 数据都传输给 Swap1,n1 和 n2 变量也都接收到数据了

C语言 函数 (库函数 · 自定义函数 · 函数参数 · 函数调用 · 嵌套调用链式访问 · 递归)相关推荐

  1. 【C语言函数】 - 库函数、自定义函数、函数参数、函数调用、嵌套调用链式访问、递归与迭代、缓冲区

    目录 一.函数是什么 二.C语言中函数的分类 1.如何学会使用库函数 1.1.strcpy 1.2.memset 2.自定义函数 2.1.与库函数的区别 2.2.写一个函数可以找出两个整数的最大值 2 ...

  2. 【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题

    函数 一.函数的嵌套调用和链式访问 1.嵌套调用 2.链式访问 2.1strlen()函数 2.2printf()函数 二.函数的声明和定义 1.函数声明和定义的介绍 2.函数声明和定义的使用 三.变 ...

  3. 用c语言线性表的链式表示实现,数据结构-使用C语言 朱战立第2章线性表的链式表示.ppt...

    数据结构-使用C语言 朱战立第2章线性表的链式表示 * 循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点出发均可找 ...

  4. 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  5. [转]EL函数、自定义EL函数、自定义标签

    EL函数 1.EL函数的作用:操作字符串 2.在JSP页面中要引入EL函数库 <%@ taglib prefix="fn" uri="http://java.sun ...

  6. 自定义条件查询_数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效...

    Excel数据查询,相信大家首先会想到vlookup函数.毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大.但是它也有一些不能实现的数据查询. 如上图所示,我们需要根据人员的出现次数, ...

  7. 8.Hive基础—函数—系统内置函数、常用内置函数、自定义函数、自定义UDF函数、自定义UDTF函数

    本文目录如下: 第8章 函数 8.1 系统内置函数 8.2 常用内置函数 8.2.1 空字段赋值 8.2.2 CASE WHEN THEN ELSE END 8.2.3 行转列 8.2.4 列转行 8 ...

  8. Hive _函数(系统内置函数、自定义函数、自定义UDF函数)

    函数 系统内置函数 1.查看系统自带的函数 show functuions; 2.显示自带的函数的用法 desc function month; 3.详细显示自带的函数的用法 desc functio ...

  9. tp5模板使用php函数,tp5 自定义公共函数,前台模板调用

    最近用tp5做一个cms,在添加模型的时候,选择类型,这类型太多了,如果一个个的去判断显示,能累死人了,干脆写个公共方法, 首先写公共方法用到Common.php,目录project/applicat ...

最新文章

  1. 谷歌浏览器输入框背景颜色变黄的解决方案
  2. Linux下autoreconfig命令安装.
  3. thinkpad重装系统不引导_thinkpad重装系统不引导_联想电脑重装系统无法引导原因及解决方法...
  4. 2021年10大人工智能趋势
  5. SpringMVC_实现简单的增删改查
  6. 工作流引擎的硬功夫之1-表单自定义
  7. Phalcon和YII的优点
  8. 湖南师范大学c语言作业答案,2017年湖南师范大学物理与信息科学学院845C语言程序设计考研题库...
  9. 看bilibili的财经博主,分析博主的频道
  10. win7服务器端口被占用,高手亲自帮您win7端口被占用的详尽处理要领
  11. 也从小站长视角浅谈主机提供商的优劣
  12. 好莱坞标志将以NFT形式进行慈善拍卖
  13. everything下载哪个版本_Everything敏感信息泄露
  14. [转]C#:手把手教你用C#打包应用程序(安装程序卸载程序)
  15. 美洽客服JavaScript 网页插件
  16. 本地访问阿里云故障问题
  17. Raspberry Pi 上手准备
  18. Papi酱: 左手奶瓶右手尿布× 左手papitube右手娱乐圈√
  19. c++/c语言 杨辉三角(详细讲解)。
  20. ubuntu18.10安装网易云音乐,并解决网易云音乐图标无法启动的问题

热门文章

  1. java命名规范法则大全
  2. (坑记)GenymotionVirtualBox下载到配置和OVA的正确配置流程
  3. PPP的PAP与CHAP
  4. easyExcel导出日期问题
  5. 《大象:thinking in uml 》(第二版) 9章 获取需求 1-2节 定义边界、发现主角
  6. 【前端基础】简单介绍什么是软件
  7. python中raise和raise e区别_python raise和assert的区别
  8. PHP之在朗沃最后一段感想
  9. html背单词代码,添加待办-背单词(专注模式).html
  10. JS 动画:给网页下个雪吧