为什么需要函数
> 避免了重复性操作
> 有利于程序的模块化
什么叫函数
> 逻辑上:
- 能够完成特定功能的独立的代码块
> 物理上:
- 能够接收数据【当然也可以不接收数据】
- 能够对接收的数据进行处理
- 能够将数据处理的结果返回【当然也可以不返回任何值】
> 总结:
- 函数是个工具,它是为了解决大量类似问题而设计的
- 函数可以当做一个黑匣子
如何定义函数
> 格式:
函数的返回值 函数的名字(函数的形参列表)
{
函数的执行体
}
> 定义:
函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法
> return 表达式; 的含义:
- 终止被调函数,向主调函数返回表达式的值
- 如果表达式为空,则只终止函数,不向主调函数返回任何值
- break是用来终止循环和switch的,return是用来终止函数的
例子:
void f()
{
return;//return只用来终止函数,不向主调函数返回任何值
}
int f()
{
return 10;//第一: 终止函数; 第二: 向主调函数返回10
}
> 函数返回值的类型也称为函数的类型,因为如果 函数名前的返回值类型
和 函数执行体中的return 表达式; 中表达式的类型不同的话,则
最终函数返回值的类型 以函数名前的返回值类型为准
例子:
int f()
{
return 10.5;//因为函数的返回值类型是int
//所以最终f返回的是10而不是10.5
}
函数的分类
> 有参函数 和 无参函数
> 有返回值函数 和 无返回值函数
> 库函数 和 用户自定函数
> 值传递函数 和 地址传递函数
> 普通函数 和 主函数(main函数)
> 注意:
- 一个程序必须有且只能有一个主函数
- 主函数可以调用普通函数 普通函数不能调用主函数
- 普通函数可以相互调用
- 主函数是程序入口,也是程序的出口
注意的问题:
函数调用和函数定义的顺序
> 如果函数调用写在函数定义的前面,则必须加函数前置声明
函数前置声明:
- 告诉编译器即将可能出现的若干个字母代表的是一个函数
- 告诉编译器即将可能出现的若干个字母所代表的函数的
形参和返回值的具体情况
- 函数声明是一个语句,末尾必须加分号
- 对库函数的声明是通过 #include <库函数所在的文件的名字.h> 来实现的形参和实参
> 个数相同
> 位置一一对应
> 数据类型必须相互兼容
如何在软件开发中合理的设计函数来解决实际问题
> 一个函数的功能尽量独立,单一
> 多学习,多模仿牛人的代码
函数是C语言的基本单位,类是Java, C#, C++的基本单位
常用的系统函数
求X的平方根
double sqrt(double x);
求X的绝对值
int abs(int x);
求X的绝对值
double fabs(double x);
如有不对或者疏漏的地方,请多多指出。谢谢(⁄ ⁄•⁄ω⁄•⁄ ⁄)