程序中一旦调用了某个函数,该函数就会完成特定的计算,然后返回到调用它的地方
函数分为库函数和自定义函数
一、库函数
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
标签:__,头文件,函数,形参,函数调用,递归,实参,语言 From: https://blog.51cto.com/u_15901728/6007625