C语言之初阶-函数
函数是什么
维基百科中对函数的定义:子程序
在计算机科学中,子程序是一个大型程序中华某部分的代码,它负责完成某项特定任务,相较于其他代码,具有相对独立性。
C语言中函数的分类
库函数
在学习C语言的时候我们总是会频繁的使用某一些功能,例如将信息打印到屏幕的printf函数等等…这是每个程序员都可能用到的,为了方便程序员进行软件开发所以就有了类似的库函数。
库函数
注意使用库函数一定要引用头文件。#include
自定义函数
如果库函数能干所有的事情,还要程序员干什么?
所有有了更加重要的自定义函数
不需要返回值就使用void
函数的参数
实际参数(实参)
真实传给函数的参数,就叫实参
实参可以是:变量,常量,表达式,函数等;
但是无论实参是何种类型,在函数调用的时候,它们都必须有确定的值。
形式参数(形参)
形式参数指的是函数名后括号中的变量,只有在调用这个函数的时候才会实例化(分配内存单元)所有叫做形式参数,形式参数当函数调用完成之后就自动销毁了,因此形式参数只在函数中有效。
函数的调用
传值调用
为什么a和b没有交换呢?
其实是因为函数的形参和实参占据不同内存块,对形参的修改不会影响实参
为了使参数有关联,所有我们有了传址调用
传址调用
这次为什么能够改变了呢?
其实是这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量
两道练习函数的题
1.写一个函数可以判断一个数是不是素数。
2.写一个函数判断一年是不是闰年。
函数的嵌套调用和链式访问
嵌套调用
注意函数可以嵌套定义但不能嵌套定义
链式访问
把一个函数的返回值作为另外一个函数的参数
求字符串“abc“长度使用#include<string.h>
函数的声明和定义
函数的声明
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了
函数的声明一般出现在函数使用之前,要满足先声明在使用
函数的声明一般要放在头文件中
虽然程序可以运行,但是会有警告
正常应该是先声明在定义
函数声明一般放在头文件里
函数定义
函数定义是指函数具体实现,交代函数的功能实现
如上图Add函数的实现。
函数递归
什么是递归
程序调用自身的编程技巧称为递归。
简单来说就是,一个过程或函数在其定义或者说明中有直接或间接调用自身的一种方法。
把大型复杂问题层层转化为一个与原问题相似的规模较小的问题来求解
递归的两个必要条件
1.必须要有限制条件,当满足这个限制条件时,递归就不再继续
2,每次递归调用之后越来越接近这个限制条件
递归的练习
接受一个整数值,按照顺序打印它的每一位
例如输入1234,打印1 2 3 4
笔者能力有限,如果有不清楚的地方,欢迎大家提问!!!谢谢!