一、什么是函数?
1.1 生活中的函数
想象你有一个榨汁机:
-
输入:苹果、橙子 ➡️
-
处理:榨汁 ➡️
-
输出:混合果汁
函数就像这个榨汁机,帮我们把输入变成想要的输出!
1.2 程序中的函数
✅ 重复代码打包 ➡️ 随用随取
✅ 复杂程序分解 ➡️ 分块解决
✅ 代码维护 ➡️ 修改一处即可
二,函数语法
// 函数定义模板
返回值类型 函数名(参数列表) {
// 函数体(具体操作)
return 返回值; // 不是所有函数都需要
}
int add(int num1, int num2) { // 两数相加函数
int result = num1 + num2;
return result; // 返回计算结果
}
-
🟢 返回值类型:int(返回整数)
-
🔵 函数名:add(见名知意)
-
🟠 参数:int num1, int num2(两个整数输入)
-
🟣 函数体:具体计算过程
-
🔴 return:返回计算结果
三、手把手创建第一个函数
// 函数声明(提前告知编译器)
float rectangle_area(float length, float width);
int main() {
float my_area = rectangle_area(5.0, 3.0);
printf("面积是:%.2f", my_area);
return 0;
}
// 函数定义
float rectangle_area(float length, float width) {
return length * width; // 直接返回计算结果
}
必须知道的注意事项
-
函数在main()之后定义时,必须提前声明
-
函数命名建议:动词+名词(如:calculateArea)
-
参数可以是0个或多个,用逗号分隔
四、函数的七十二变用法
void sayHello() { // void表示没有返回值
printf("你好呀,编程新人!\n");
}
void printStar(int count) {
for(int i=0; i<count; i++){
printf("★");
}
printf("\n");
}
// 使用:printStar(5); 输出★★★★★
// 多参数示例
void createUser(char name[20], int age, float height) {
printf("新建用户:%s,年龄%d,身高%.1fcm", name, age, height);
}
五、新手常见翻车现场
// 错误1:忘记声明函数
int main() {
greet(); // 编译器懵逼:这是啥?
return 0;
}
void greet() { printf("Hi"); }
// 错误2:返回值类型不符
int add() {
return 3.14; // 说好返回int,却给小数
}
void swap(int a, int b) { // 这样交换是无效的!
int temp = a;
a = b;
b = temp;
}
// 正确方法需要用到指针(后续学习)
六、总结
-
先声明后使用(或把定义放main前面)
-
参数类型要匹配(int参数不能传float)
-
返回值类型要一致(声明返回int就别return小数)
-
单一职责原则(一个函数只做一件事)
-
下期预告:函数的进阶用法