函数【c语言的第二个重点】
为什么需要函数
避免了重复性操作
有利于程序的模块化
什么叫函数
逻辑上:能够完成特定功能的独立代码块
物理上:能够接受数据【当然也可以不接受数据】
能够对接受的数据进行处理
能够将数据处理的结果返回【当然也可以不返回任何值】
总结:函数是个工具,它是为了解决大量类似问题而设计的
函数可以当做是一个黑匣子
如何定义函数
函数的返回值 函数的名字(函数的形参列表)
{
函数的执行体;
}
1. 函数定义的实质是详细描述函数之所以能够实现某个特定功能的具体方法。
2. return 表达式; 的含义
1) 终止被调函数,向主调函数返回表达式的值;
2) 如果表达式为空,则只终止函数,不向主调函数返回任何值
3)break是用来终止循环和switch,return是用来终止函数的
3. 函数返回值的类型也称为函数的类型,因为如果,函数名前的返回值类型和函数执行体中的return 表达式;中表达式的类型不同的话,则最终函数返回值类型以函数名前的返回值类型为准。
例子:
int f()
{
return 10.6; //因为函数的返回值类型是int,所以最终f返回的是10而不是10.5
}
函数的分类
有参函数和无参函数
有返回值函数和无返回值函数
库函数和用户自定义函数
值传递函数和地址传递函数
普通函数和主函数
一个程序有且只有一个主函数
主函数可以调用普通函数
普通函数不能调用主函数
普通函数可以相互调用
主函数是程序的入口,也是程序的出口
注意的问题
函数调用和函数定义的顺序
如果函数调用写在了函数定义的前面,则必须加函数前置声明
函数前置声明:
1. 告诉编译器即将出现的若干个字母代表的是一个函数
2. 告诉编译器即将出现的若干个字母所代表的函数的形参和返回值具体情况
3. 函数的声明是一个语句,末尾必须加分号
4. 对库函数的声明是通过#include <库函数所在文件的名字.h>
形参和实参
个数相同,位置一一对应,数据类型必须相互兼容
函数是C语言的基本单位,类是Java,C#, C++的基本单位
常用的系统函数
double sqrt(double x)
求x的平方根
int abs(int x)
求x的绝对值
double fabs(double x)
求x的绝对值
变量的作用域和存储方式
按作用域分:
全局变量
在所有函数外部定义的变量叫全局变量。
全局变量使用范围:从定义位置开始到整个程序结束
局部变量
在一个函数内部定义的变量或者函数的形参,都统称为局部变量。
局部变量使用范围:只能在本函数内部使用
全局变量和局部变量命名相冲突的问题
在一个函数内部如果定义的局部变量的名字和全局变量名字一样时,局部变量会屏蔽掉全局变量
按变量的存储方式:
静态变量
自动变量
寄存器变量
常用的系统函数
double sqrt(double x)
求x的平方根
int abs(int x)
求x的绝对值
double fabs(double x)
求x的绝对值
变量的作用域和存储方式
按作用域分:
全局变量
在所有函数外部定义的变量叫全局变量。
全局变量使用范围:从定义位置开始到整个程序结束
局部变量
在一个函数内部定义的变量或者函数的形参,都统称为局部变量。
局部变量使用范围:只能在本函数内部使用
全局变量和局部变量命名相冲突的问题
在一个函数内部如果定义的局部变量的名字和全局变量名字一样时,局部变量会屏蔽掉全局变量
按变量的存储方式:
静态变量
自动变量
寄存器变量
专题:
递归