嵌入式之路,贵在日常点滴
---阿杰在线送代码
目录
一、函数基本概念
- C源程序是由函数组成的
- 例如: 我们前面学习的课程当中,通过main函数+scanf函数+printf函数+逻辑代码就可以组成一个C语言程序
- C语言不仅提供了极为丰富的库函数, 还允许用户建立自己定义的函数。用户可把自己的算法编写成一个个相对独立的函数,然后再需要的时候调用它
二、函数的分类
- 在C语言中可从不同的角度对函数分类
- 从函数定义的角度看,函数可分为库函数和用户定义函数两种
- 库函数: 由C语言系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。在前面各章的例题中反复用到printf、scanf、getchar、putchar等函数均属此类
- 用户定义函数:由用户按需编写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用
- 从函数执行结果的角度来看, 函数可分为有返回值函数和无返回值函数两种
- 有返回值函数: 此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。(必须指定返回值类型和使用return关键字返回对应数据)
- 无返回值函数: 此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。(返回值类型为void, 不用使用return关键字返回对应数据)
- 从主调函数和被调函数之间数据传送的角度看,又可分为无参函数和有参函数两种
- 无参函数: 在函数定义及函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传送。
- 有参函数: 在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)
三、函数的定义
- 定义函数的目的
- 将一个常用的功能封装起来,方便以后调用
- 自定义函数的书写格式
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
函数体;
返回值;
}
- 函数三要素:
- 函数名
- 参数列表
- 返回值
- 定义函数的步骤
- 返回值类型: 函数执行完毕返回什么和调用者
- 函数名:函数叫什么名字
- 参数列表
- 函数体:函数是干啥的,里面包含了什么代码
- 示例
int main()
{
printf("hello world\n");
retrun 0;
}
无参无返回值函数定义
- 没有返回值时return可以省略
- 格式:
void 函数名()
{
函数体;
}
// 1.没有返回值/没有形参
// 如果一个函数不需要返回任何数据给调用者, 那么返回值类型就是void
void printRose() {
printf(" {@}\n");
printf(" |\n");
printf(" \\|/\n");
// 注意: \是一个特殊的符号(转意字符), 想输出\必须写两个斜线
printf(" |\n");
// 如果函数不需要返回数据给调用者, 那么函数中的return可以不写
}
无参有返回值函数定义
- 格式:
返回值类型 函数名()
{
函数体;
return 值;
}
- 示例:
int getMax()
{
printf("请输入两个整数, 以逗号隔开, 以回车结束\n");
int number1, number2;
scanf("%i,%i", &number1, &number2);
int max = number1 > number2 ? number1 : number2;
return max;
}
有参无返回值函数定义
- 形式参数表列表的格式: 类型 变量名,类型 变量2,......
- 格式:
void 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
函数体;
}
- 示例:
void printMax(int value1, int value2)
{
int max = value1 > value2 ? value1 : value2;
printf("max = %i\n", max);
}
有参有返回值函数定义
- 格式:
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
函数体;
return 0;
}
- 示例:
int printMax(int value1, int value2)
{
int max = value1 > value2 ? value1 : value2;
return max;
}