c语言——函数及递归

时间:2023-01-14 16:56:21

程序中一旦调用了某个函数,该函数就会完成特定的计算,然后返回到调用它的地方

函数分为库函数和自定义函数

一、库函数

io函数都在头文件stdio中

字符串操作函数都在头文件string中

数学函数都在头文件math中

     平方根函数 sqrt (x)

     绝对值函数 fabs (x)

     幂函数 pow (x, n) 

     指数函数 exp (x):ex

     以e为底的对数函数 log (x)

     以10为底的对数函数 log10 (x)

字符操作函数

内存操作函数

时间/日期函数

二、自定义函数

函数定义:

函数类型 函数名(形参表)//函数首部,函数名自定义,见名知意,参数之间用逗号分隔,每个参数前类型必须分别写明,不能两个参数共用一个类型
{ //函数体
函数实现过程
return 表达式
};
//只能返回一个值,把运算结果返回给主函数,表达式类型与函数类型一致
无返回值用void定义返回值类型和函数类型,return语句无需表达式或直接省略用void定义参数表示没有参数。
函数类型不写默认int,形参若没有可以省略,只写()

一般把main函数放在前面,函数放在后面,为了让编译器知道我们有函数,在main上面要加一句函数声明,写法和函数首部相同并加上分号。

在main函数中使用到函数时,调用函数

调用函数的形式:函数名(实际参数表)

当实参有多个时,后面的先计算

对于有返回值的函数,函数调用通常出现在两种情况:

1.函数调用可以放到一个数值表达式中,例如volume=cylinder(radius,height);

2.函数调用可以作为另一个函数调用的参数,例如printf("%f",cylinder(radius,height));

函数调用的过程:

从main函数开始,遇到函数调用,主函数暂停,执行相应的函数,函数执行完毕后,返回主函数并将返回值带回主函数,从原先暂停位置继续执行。

参数传递:实参→形参(单向传递)  数组函数传递的是首元素的地址

1.把实参值复制给形参

2.形参实参一一对应,数量一致,类型一致,顺序一致

3.形参:变量,用于接收实参传递过来的值

   实参:常量、变量、表达式、函数

函数结果返回形式:return 表达式;或return (表达式);

如果返回类型与函数类型不同,转换为函数类型

形参实参有自己的空间,形参的改变不会改变实参

如何让形参改变使实参改变

函数调用实参&a,&b

形参int*pa,int*pb

三、函数的分文件编写

1.创建后缀名为.h的头文件

2.创建后缀名为.cpp的源文件

3在头文件中写函数的声明

4.在源文件中写函数的定义

这里报错的同学, 是因为你在别的文件中也有swap函数的定义

记得把前面文件里的swap定义注释掉再运行分文件!

 引用自己其他文件的头文件#include “文件名”

为防止一个头文件被引用多次

#ifndef __ADD_H__   //如果没有定义过__ADD_H__
#define __ADD_H__ //从这里开始执行,定义__ADD_H__
函数声明
#endif //从这里结束

printf("%d",printf("%d",printf("%d",43)))

输出4321,因为printf返回的是字符的个数,43是2个,2是1个

四、递归

常见错误

栈溢出stack overflow

c语言——函数及递归