一、为什么需要函数?
避免代码重复率高、有利于程序模块化和后期维护
二、什么叫函数?
逻辑上:能够完成特定功能的独立代码块;
物理上:能够数据交互并且对数据进行处理。
相当于黑匣子
三、如何定义函数?
函数返回值类型 函数名称(函数的形参列表)
{
函数的执行体
}
实现某一个特定功能
【注】1、return表达式的含义:
1)终止被调函数,向主调函数返回表达式的值;
2)如果表达式为空,即只终止函数,不向主调函数返回任何值;
3)break是用来终止循环和switch的;return是用来终止函数的,在有返回值的的情况下向主调函数返回 返回值。
四、函数的分类:
有参函数 和 无参函数;
有返回值函数 和 无返回值函数;
库函数 和 用户自定义函数;
值传递函数 和 地址传递函数;
普通函数 和 主函数(main函数);
一个程序必须有且只能有一个主函数;
主函数可以调用普通函数,普通函数不能调用主函数;
普通函数可以相互调用;
主函数是程序的入口,也是程序的出口。
五、注意的问题:
函数调用 和 函数定义 的顺序: 如果函数调用写在了函数定义的前面,则必须加函数前置声明
1、函数前置声明:
1)告诉编译器即将可能出现的若干个字母代表的是一个函数;
2)告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况;
3)函数声明是一个语句,末位必须加分号;
4)对库函数的声明是通过 #include <库函数所在的文件的名字.h> 来实现的
2、形参和实参:
个数相同,位置一一对应,数据类型必须相互兼容。
前面问题的补充:浮点数的存储所带来的问题
eg:
float i = 99.9;
printf("%f\n", i);
//最终在编译其中的输出结果是: 99.900002,
//表明 float 和 double 都不能保证可以把所有的实数都准确的保存在计算机中。