一、函数简介
1.函数定义
函数是一种可重用的代码块,用于执行特定任务或完成特定功能
2.函数作用
代码复用、结构清晰、易维护、减少重复、模块化、便于调试
3.函数分类
(1)系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf()。
(2)自定义函数:用以解决用户的专门需要。
4.函数的使用
(1)定义函数(实现功能):编写函数具体要完成的任务
函数的语法结构:
返回值类型 函数名(参数列表)
{
函数体;
return 返回值;
}
(2)函数声明:当函数定义在main()后面时,需要提前声明
函数声明的格式:
返回值类型 函数名(参数列表);
(3)函数调用(执行功能):通过函数名调用函数。
调用语法格式:
函数名(实参);
5.函数的注意事项
(1)函数名是标识符的一种,需要遵循规则
(2)函数只需要定义一次,反复调用
(3)只定义函数, 不调用函数, 函数永远不会被执行
二、函数的四种形式
1.无参无返回值函数
(1)概念:没有参数(不接收数据)
没有返回值(不返回结果)
(2)无参无返回值函数语法格式:
// 函数定义
void 函数名() {
函数体
}
// 函数调用
函数名();
(3)示例代码
编写一个函数,输出Hello
参考代码:
#include <stdio.h>
//无参无返回值
//在无返回值的最好在void定义函数的()中加上void,这样更加安全,
//因为如果不写,意味着参数未知,加上void就意味着绝对无参数返回
void say_hi(void){
printf("Hello\n");
}
int main() {
say_hi();
return 0;
}
2.有参无返回值函数
(1)概念:函数在执行时需要接收外部传入的数据(参数),但执行完成后不向调用者返回任何 结果。
(2)有参无返回值函数语法格式
// 函数定义(有参数,无返回值)
void 函数名(数据类型 参数1, 数据类型 参数2, ...)
{
函数体;
}
// 函数调用(传入实参)
函数名(实参1, 实参2, ...);
(3)示例代码
编写一个程序,要求一件商品的单价,重量,计算出付款多少
#include <stdio.h>
//有参数的函数, 传递的参数必须个数和类型都一致
//如这段代码中,weight,price的类型都为float,所以函数调用时pay中的类型为2.0 5.2
void pay(float weight,float price){
printf("重量为%.2fkg,单价为%.2f元,付款为%.2f元",weight,price,weight*price);
}
int main() {
pay(2.0,5.2f);
return 0;
}
3.无参有返回值函数
(1)概念:是指函数不需要接收任何参数,但执行结束后会向调用者返回一个结果。
return是函数的专属关键字,只能用在函数内使用
(2)无参有返回值函数语法格式
// 函数定义(无参数,有返回值)
返回值类型 函数名(void)
{
函数体;
return 返回值;
}
// 函数调用(接收返回值)
数据类型 变量名 = 函数名();
(3)示例代码:
编写一个函数,实现返回一个整数
#include <stdio.h>
int getRandomNumber(void) {
return 42;
}
int main() {
int num = getRandomNumber();
printf("返回的整数为:%d\n", num);
return 0;
}
4.有参有返回值函数
(1)概念:是指函数需要接收调用者传入的数据(参数),并在执行结束后返回一个结果给调用 者。
(2)有参有返回值函数语法格式
// 函数定义(有参数,有返回值)
返回值类型 函数名(数据类型 参数1, 数据类型 参数2, ...)
{
函数体;
return 返回值;
}
// 函数调用(接收返回值)
数据类型 变量名 = 函数名(实参1, 实参2, ...);
(3)示例代码:
编写一个函数,实现2个数相加,2个数通过参数传递,返回累加结果给外部使用
#include <stdio.h>
int add(int a, int b) {
int res = a + b;
return res;
}
int main() {
int res = add(3, 5);
printf("两个数的和为%d", res);
return 0;
}
三、函数声明
1.函数声明定义
在函数调用之前,提前告诉编译器函数的名称、返回值类型和参数列表,以便编译器能够正确识别和检查函数的调用。
2.注意事项
(1)声明后必须加 ;
(2)声明没有{ }函数体
(3)生命与定义必须一致
(4)参数名可以省略,但是为了提高可读性,建议把参数名。
例如:
int add(int, int);
int add(int a, int b);
(5)函数可以声明多次
(6)但是函数只能定义一次
(7)调用前必须先声明或先定义函数

806

被折叠的 条评论
为什么被折叠?



