一、 初见函数#define _CRT_SECURE_NO_WARNINGS #includestdio.h void sum(int begin, int end) { int i; int sum 0; for (i begin;i end;i) { sum i; } printf(%d到%d的和是%d\n, begin, end, sum); } int main() { sum(1, 10); sum(20, 30); sum(35, 45); return 0; }求和函数void sum(int begin,int end){int i;int sum0;for(ibegin;iend;i){sumi;}printf(%d到%d的和是%d\n, egin,end,sum)}函数编程中的函数一段封装好、可以重复调用的代码块用来完成某个特定功能。 数学函数是 (yf(x))代码函数也是返回值 f(参数)但含义不一样。一、函数的作用代码复用写一次多次调用不用重复复制代码模块化把大程序拆成多个小函数方便阅读、调试简化逻辑一个函数只做一件事二、C 语言函数分类1. 库函数系统自带直接用C 标准库提前写好的函数#include头文件就能调用printf()输出scanf()输入sqrt()求平方根math.hrand()随机数2. 自定义函数自己写自己定义功能格式返回值类型 函数名(参数列表) { 函数体; // 要执行的代码 return 返回值; }三、函数各部分详解① 返回值类型函数执行完可以返回一个结果给调用处。int返回整数double返回小数void无返回值函数不需要 return或者写return;② 函数名命名规则字母、数字、下划线不能数字开头见名知意如add、isPrime③ 参数列表形参int add(int a, int b)a,b叫形式参数形参只是占位符。调用的时候传入的值叫实际参数实参两种函数有参函数 / 无参函数// 无参函数void无返回 void printHello() { printf(hello); } // 有参函数int返回值 int add(int a, int b) { return a b; }④ returnreturn 数据;终止函数把数据返回给调用者void函数可以不写 return写return;代表直接退出函数一旦执行 return函数立刻结束后面代码不再运行四、函数调用#include stdio.h // 函数定义 int add(int a, int b) { return a b; } int main() { int sum; sum add(3,5); // 调用函数3、5是实参 printf(%d, sum); return 0; }执行流程main→ 调用 add → 进入 add 函数执行 → return 结果 → 回到 main 继续往下跑main()也是一个函数C 程序入口永远是main函数。五、形参和实参特点值传递C 默认void change(int x) { x 100; } int main() { int a 10; change(a); printf(%d, a); // 输出还是10 }✅值传递只是把实参的值拷贝一份给形参函数内部修改形参不会影响外面原来的变量。✅ 形参和实参可以用相同名字同一个字母 / 变量名但是它们是两个完全独立的变量互不影响值传递。语法允许同名初学阶段为了不容易混淆推荐先使用不同名字比如形参 a,b实参 x,y区分口诀形参写在函数定义括号里属于函数内部实参写在函数调用括号里属于调用它的地方六、函数声明函数原型如果自定义函数写在main后面必须在 main 前面声明告诉编译器函数长什么样。#include stdio.h int add(int a, int b); // 函数声明原型 int main() { int s add(2,3); return 0; } int add(int a, int b) // 函数定义 { return ab; }声明可以只写类型参数名可省略int add(int, int);七、函数基础易错点参数之间用逗号隔开每个参数单独写类型❌int add(int a,b)✅int add(int a, int b)void函数不要 return 一个数值 ❌void test(){ return 1; }函数不能嵌套定义C 不允许函数里面再定义函数void f(){ void g(){ } // 错误C语言不支持函数嵌套定义 }✅ 函数可以互相调用可以嵌套调用九、几个核心概念一句话总结定义创造函数写完整代码声明告诉编译器函数信息调用使用这个函数形参函数定义里的变量占位实参调用时传入的真实数据值传递拷贝一份数据形参修改不影响外面例子1. 减法函数:#define _CRT_SECURE_NO_WARNINGS #includestdio.h int subNum(int a, int b) { int sum a - b; return sum; } int main() { int x, y, ret; printf(请输入两个数字\n); scanf(%d %d, x, y); ret subNum(x, y); printf(%d-%d%d, x, y, ret); return 0; }注意调用函数时不要写成“retint subNum(x,y);”