一、函数本质与设计思想函数是 C 语言的基本执行单元核心作用是代码封装、复用、模块化遵循单一职责原则函数不调用不执行调用时入栈执行完毕出栈局部资源自动释放。二、函数声明、定义与调用声明仅告知编译器函数名、返回值、参数无函数体可多次声明。定义函数具体实现包含函数体只能定义一次。调用实参传递给形参程序跳转执行执行后返回调用处。三、参数传递核心考点值传递C 语言唯一传递方式形参是实参副本函数内修改不影响实参。地址 / 指针传递传递变量地址通过指针解引用可修改实参常用于大数据传递、输出型参数。数组传参数组名退化为指针丢失长度信息必须额外传递数组长度。二维数组传参char str[][N]对应行指针char (*str)[N]指针数组char *str[]对应二级指针char **str。四、返回值规范可返回普通变量、指针、结构体禁止返回局部变量 / 局部数组地址栈内存失效。返回数组需搭配static静态存储、malloc动态内存、结构体封装数据 长度。动态内存遵循谁申请、谁释放原则调用方接收指针后负责free防止内存泄漏。五、作用域与生命周期局部变量栈区函数内有效执行结束自动销毁。全局变量数据段整个程序有效慎用易引发耦合。static 变量静态存储区仅初始化一次生命周期贯穿程序作用域受限。static 函数仅当前文件可见用于模块化封装避免命名冲突。六、指针函数与函数指针指针函数返回指针的函数int *fun()常用于返回数组、字符串。函数指针指向函数的指针int (*p)()用于回调、函数表、动态分发。七、递归函数自身调用自身必须有明确终止条件否则栈溢出。适用于分治、遍历场景效率低于循环慎用深度递归。八、工程与面试避坑数组传参必带长度禁止依赖sizeof获取数组大小。指针参数必须判空防止空指针解引用崩溃。字符串操作以\0为结束标志strcpy需手动保证目标空间充足。动态内存malloc/calloc与free配对使用释放后置空避免野指针。函数设计保持简洁参数不宜过多职责单一提升可读性与可维护性。九、核心总结函数是 C 语言模块化编程的基石参数传递、内存管理、指针应用是核心工程开发注重安全、规范、可复用面试重点考察传参机制、指针理解、内存安全与边界处理。