公司动态

C语言函数学习

📅 2026/8/1 5:46:49
C语言函数学习
一、函数核心作用解耦程序拆分重复代码降低代码冗余模块化开发提升代码复用性、可读性与维护性二、函数定义完整实现语法格式返回值类型 函数名(形参列表) { 函数体; }返回值支持int/char/float/double等基础类型、构造类型void空类型函数执行完毕无返回结果可省略return或写return;非void函数必须用return返回对应类型值否则返回随机垃圾值。函数名遵循标识符命名规则建议见名知意多用动宾命名get_max_val、print_star。形参列表格式数据类型 形参名, 数据类型 形参名... 作用函数执行依赖的外部条件仅函数内部有效。三、函数调用基础语法函数名(实参列表);调用规则实参个数、数据类型必须与形参匹配兼容类型也可如 char 传给 int实参与形参名称无强制关联可相同可不同函数不调用则不执行调用多少次就执行多少次函数调用整体是表达式结果为函数返回值传参求值顺序自右向左。概念区分主调函数发起调用的函数如main被调函数被其他代码调用的自定义函数。四、函数声明作用场景自定义函数写在main之后编译器报隐式声明警告需提前声明多文件工程供其他.c文件调用该函数。声明语法返回值类型 函数名(形参列表);末尾分号不可少五、函数调用底层流程保护现场调用函数时将下一条指令地址存入栈记录返回位置执行被调函数内部逻辑恢复现场函数执行完毕取出栈中保存的地址回到主调函数断点继续执行。六、函数传参值传递本质实参向形参拷贝一份数据实参、形参拥有完全独立的内存空间特性被调函数内修改形参不会影响主调函数原始变量图示逻辑main 栈区变量和 fun 栈区变量分属两块内存互不干扰。七、递归函数定义函数直接 / 间接调用自身本质等价循环。必备要求必须设置递归出口终止条件否则无限递归栈溢出优缺点优点代码简洁适合阶乘、斐波那契、树形问题缺点频繁入栈出栈系统内存开销大于普通循环。执行流程递推逐层调用自身直到触发出口回溯从出口逐层返回计算结果合并得到最终值。八、数组作为函数参数定义格式void print_array(int a[], int len){逻辑}核心特性数组名传参本质传递数组首元素地址不是完整拷贝数组形参写法int a[]等价int *asizeof(a)结果为指针大小64 位系统 8 字节无法在函数内计算数组长度必须额外传入数组长度len因为传递地址函数内修改数组元素会直接改变外部原数组外部数组的下标访问逻辑在函数内完全通用。