8.1:定义
*为什么需要函数?
1.避免重复性操作
2.有利于程序的模块化
*什么叫函数?
逻辑上:能够完成特定功能的独立的代码块
物理上:能够接收数据(也可以不接收数据)
能够对接收的数据进行处理
能够将数据处理的结果返回
总结:函数是个工具,它是为了解决大量类似问题而设计的;函数可以当作一个黑匣子
*如何定义函数?
函数的返回值 函数的名字(函数的形参列表){
函数的执行体
}
void max(int i, int j)
{
if (i > j)
printf("%d\n", i);
else
printf("%d\n", j);
}
/*
时间:2022年3月24日09:54:23
目的:用函数进行比大小
*/
#include<stdio.h>
void max(int i, int j) //max是函数的名字;void表示函数没有返回值;i,j表示形参(函数中用于存储值的变量)
{
if (i > j)
printf("%d\n", i);
else
printf("%d\n", j);
}
int main(void)
{
int a, b, c, d, e, f;
a = 1, b = 2, c = 3, d = 9, e = -5, f = 100;
max(a, b);
max(c, d);
max(e, f);
/*if (a > b)
printf("%d\n", a);
else
printf("%d\n",b);
if (c> d)
printf("%d\n", c);
else
printf("%d\n", d);
if (e > f)
printf("%d\n", e);
else
printf("%d\n", f);
*/
return 0;
}
/*
在vs2019中的输出结果
~~~~~~~~~~~~~~~~~~~~~
2
9
100
~~~~~~~~~~~~~~~~~~~~~
总结:。。。
*/
*函数的本质:详细描述函数之所以能够实现某个特定功能的具体方法
8.2:return表达式的含义
(1)终止被调函数,向主调函数返回表达式的值
(2)如果表达式为空,则只终止函数,不向被调函数返回任何值
(3)break是用来终止循环和switch的,return是用来终值函数的
例子: void f()
{
return; //return只用来终止函数,不向主调函数返回任何值
}
int f()
{
return 10; //第一:终止函数; 第二:向主调函数返回10
}
*函数返回值的类型也称为函数的类型,因为如果函数名前的返回值类型和函数执行体中的return表达式中的类型不同的话,则最终函数返回值的类型以函数名前的返回值类型为准
*函数的分类
有参函数和无参函数
有返回值函数和无返回值函数
库函数和用户自定义函数
值函数和地址传递函数
普通函数和主函数(main函数)
一个程序必须有且只能有一个主函数;主函数可以调用普通函数,普通函数不能调用主函数;普通函数可以相互调用;主函数是程序的入口,也是程序的出口
8.3:注意问题
1 :函数调用和函数定义的顺序
如果函数调用写在了函数定义的前面,则必须加函数前置声明
函数前置声明:
(1)告诉编译器即将可能出现的若干个字母代表的是一个函数
(2)告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况
(3)函数声明是一个语句,末尾必须加分号
(4)对库函数的声明是通过#include<库函数所在文件的名字.h>来实现的
2:形参和实参
实际参数(actual arguement):传递给函数的特定值(函数调用提供的特殊值)
形式参数(formal arguement):函数中用于存储值的变量
实参被赋给相应的形参
(1)个数相同
(2)位置一一对应
(3)数据类型必须相互兼容
3:如何在软件开发中合理的设计函数来解决实际问题?
(1)一个函数的功能尽量独立,单一
(2)多学习,多模仿牛人的代码
*常用的系统函数
double sprt(double x);
求x的平方根
Int abs(int x);
求x的绝对值