别被“函数”吓住——C语言函数,其实就是你的“万能小工具”

别被“函数”吓住——C语言函数,其实就是你的“万能小工具”
小白也能听懂的C语言函数指南从此写代码不再“一锅炖”一、先问你一个问题假如你要做一顿番茄炒蛋你会怎么做洗番茄 → 切番茄 → 打蛋 → 炒 → 放盐 → 出锅如果你把每一步都写在一个大流程里以后想做蛋炒饭又得重新写一遍“打蛋”“炒”……累不累聪明的做法是把“打蛋”这个动作单独做成一个小工具想做番茄炒蛋时用一下想做蛋炒饭时再用一下随叫随到。C语言里的函数就是这些小工具。二、函数长什么样——拆开给你看一个最简单的C函数像这样int add(int a, int b) // 函数头 { // 函数体开始 int sum a b; return sum; // 返回结果 } // 函数体结束咱们给它贴个标签部分意思生活类比int返回值的类型整数这个工具最后会交给你一个什么东西比如一盘菜add函数的名字工具的名字比如“打蛋器”(int a, int b)参数列表你交给工具的原料两个鸡蛋{ ... }函数体工具内部具体怎么干活return sum;返回值把做好的东西递给你所以add(3, 5) 就是告诉这个工具“给我把 3 和 5 加起来”它会回你一个 8。三、函数三要素定义、声明、调用很多新手被这三个词绕晕我用快递站来解释定义写清楚这个工具是干嘛的、怎么运作相当于建一个快递分拣流水线。声明提前告诉编译器“我要用这个工具了它长这样”相当于在门口贴个告示牌说这里有个分拣线。调用真正使用它相当于你把包裹扔进去等它处理完吐出来。代码里的样子#include stdio.h // 1. 声明告诉编译器有个叫 add 的函数后面会定义 int add(int a, int b); int main() { // 3. 调用真正使用 int result add(10, 20); printf(结果是 %d\n, result); return 0; } // 2. 定义具体实现 int add(int a, int b) { return a b; }注意如果你把定义放在 main 前面声明可以省略但好习惯是永远声明。四、参数和返回值——函数的“输入输出”4.1 参数你给函数什么参数就是函数需要的“原料”。可以没有也可以有好几个。void sayHello() { // 没参数没返回值void表示空 printf(你好呀\n); }你也可以给多个参数用逗号隔开int max(int x, int y) { return x y ? x : y; }4.2 返回值函数给你什么返回值就是函数干完活后还给你的结果。如果函数不需要返回东西就写 void。如果返回 int就写 int最后一定得 return 一个整数。void printStar() { // 只打印不返回 printf(*****\n); }五、为什么非要用函数——三个理由让你爱上它理由解释避免重复同样的代码写一遍就够了其他地方调用即可比如“打蛋”到处用容易修改如果发现“打蛋”应该加盐只需改函数内部所有用到的地方自动生效逻辑清晰main() 里面只写主要流程具体细节交给各个函数代码像目录一样一目了然想象一下如果你的 C 语言作业只有main函数里面写了 500 行……那叫“屎山”。有了函数你就能把大山拆成小土堆一个一个解决。六、一个完整的小例子——计算圆的面积#include stdio.h #define PI 3.14159 // 函数声明 float circleArea(float r); int main() { float radius 5.0; float area circleArea(radius); // 调用 printf(半径为 %.2f 的圆面积是 %.2f\n, radius, area); return 0; } // 函数定义 float circleArea(float r) { return PI * r * r; }你看main里只要一句话就能算出面积以后想算任何半径只要传不同的参数就行。七、新手最容易踩的三个坑一定要看坑1忘记声明或定义顺序int main() { int x add(3, 4); // 编译器不认识 add报错 return 0; } int add(int a, int b) { return a b; }解决把add定义放到main前面或者在main前加一行声明int add(int a, int b);坑2返回值类型不匹配int getNum() { return 3.14; // 警告本来要 int却返回 float }编译器会截断小数得到 3这不是你想要的。坑3参数个数或类型不对int add(int a, int b) { return a b; } // 调用时 add(5); // 少一个参数报错 add(3, 4, 5); // 多一个参数报错 add(3.5, 4.2); // 类型不匹配但会隐式转换可能丢失精度八、总结一句记住就值了函数 你封装好的一个小工厂给它原料参数它干活最后给你产品返回值。C语言程序就是从 main 这个“总工厂”开始一路调用各种“分工厂”完成整个任务。最后送你一个“函数版”的 Hello World#include stdio.h void printHello() { printf(Hello, 函数\n); } int main() { printHello(); // 调用一次 printHello(); // 调用两次 printHello(); // 调用三次 return 0; }你会发现把重复的动作写成函数代码瞬间清爽了。如果你觉得有帮助欢迎点赞、收藏、评论让更多人看到