函数从入门到进阶--知识点总结加代码实战
函数从入门到进阶很多初学C语言的朋友学到 函数 这一章都会卡壳看不懂形参实参、不知道返回值怎么用、分不清全局/局部变量、写代码只会堆main函数、代码杂乱冗余还容易报错。今天这篇博客不堆砌概念全程纯干货可直接运行的实战代码从零带你吃透C语言函数学完直接上手写模块化代码。一、先搞懂到底什么是函数1. 通俗理解函数就是封装好的一段可重复使用的代码块。类比生活洗衣机就是一个“函数”。输入衣服、洗衣液参数内部执行进水、洗涤、脱水函数内部逻辑输出干净的衣服返回值写代码时把重复用到的功能求和、判断奇偶、排序、计算最值封装成函数不用每次重复写代码大幅精简代码、减少bug。2. C语言函数两大核心优势代码复用写一次随处调用不用重复造轮子模块化编程功能拆分清晰代码易读、易改、易排查错误二、C语言函数完整语法必背1. 标准函数格式返回值类型 函数名(形参列表){// 函数主体实现具体功能return返回值;// 和返回值类型对应}2. 各部分详解新手最易混淆点返回值类型函数执行完返回的数据类型int、float、void、char函数名自定义命名遵循标识符规则字母/数字/下划线不能数字开头形参列表函数接收的参数相当于“变量占位符”可空void无返回值函数不需要写return3. 函数的3种分类实战常用无参无返回值简单打印类功能有参无返回值对传入数据做处理不返回结果有参有返回值核心常用处理数据并返回结果三、从零实战3类函数完整代码案例所有代码可直接复制编译运行适配Dev-C、VS、gcc所有编译环境。实战1无参无返回值函数适用场景固定提示、固定图案打印、无需传参和结果的功能。#includestdio.h// 自定义无参无返回值函数voidprintHello(){printf( C语言函数实战 \n);printf(干货满满零基础入门\n);}intmain(){// 直接调用函数printHello();printHello();// 可重复调用return0;}运行结果 C语言函数实战 干货满满零基础入门 C语言函数实战 干货满满零基础入门核心要点void无返回值括号无形参直接函数名()调用。实战2有参无返回值函数适用场景接收外部数据完成打印、判断、修改等操作无需返回结果。案例传入两个整数打印两数之和#includestdio.h// 有参无返回值函数形参a、bvoidgetSum(inta,intb){intsumab;printf(两数之和为%d\n,sum);}intmain(){intx10,y20;// 传入实参x、ygetSum(x,y);getSum(50,30);// 直接传常量也可以return0;}运行结果两数之和为30两数之和为80重点区分形参 vs 实参形参函数定义时括号内的变量int a, int b仅占位不分配实际内存实参调用函数时传入的变量/常量x、y、50、30是真实数据实战3有参有返回值函数项目核心这是最常用的函数类型接收参数处理后返回结果给主函数使用。案例1求两个数的最大值#includestdio.h// 有参有返回值接收两个int返回最大值intintgetMax(inta,intb){if(ab){returna;// 返回结果}else{returnb;}}intmain(){intnum1,num2;printf(请输入两个整数);scanf(%d %d,num1,num2);// 接收函数返回值intmaxgetMax(num1,num2);printf(最大值为%d\n,max);return0;}案例2进阶实战判断一个数是否为素数#includestdio.h#includemath.h// 素数判断函数是素数返回1不是返回0intisPrime(intn){// 小于2不是素数if(n2)return0;// 遍历判断是否能被整除for(inti2;isqrt(n);i){if(n%i0){return0;// 能被整除不是素数}}return1;// 是素数}intmain(){intnum;printf(请输入一个数字);scanf(%d,num);if(isPrime(num)){printf(%d 是素数\n,num);}else{printf(%d 不是素数\n,num);}return0;}四、新手必踩坑函数声明与调用规则1. 经典报错隐式声明函数C语言规则函数必须先声明/定义后调用。如果把自定义函数写在main函数后面直接调用会报错。定义在调用之后且未声明就会报错2. 两种解决方法必掌握方法一函数写在main函数之前适合小型代码方法二函数声明大型项目标准写法#includestdio.h// 函数声明只写头部分号结尾intgetSum(inta,intb);intmain(){printf(%d\n,getSum(10,20));return0;}// 函数定义写在后面intgetSum(inta,intb){returnab;}总结声明告诉编译器“有这个函数”定义是函数具体实现。五、核心重难点局部变量 全局变量90%出错的根源变量作用域搞不清楚。1. 局部变量定义在函数内部仅在当前函数有效函数结束立即销毁不同函数可以定义同名局部变量互不干扰2. 全局变量定义在所有函数外部整个程序所有函数都可以使用程序运行期间始终占用内存3. 对比实战代码#includestdio.hintnum100;// 全局变量voidtest(){intnum200;// 局部变量优先使用printf(函数内部num%d\n,num);}intmain(){printf(main全局num%d\n,num);test();return0;}运行结果main全局num100函数内部num200核心规则局部变量优先局部会屏蔽全局。六、高阶实战递归函数经典例题递归函数自己调用自己核心是「递推终止条件」常用于阶乘、斐波那契数列、遍历问题。实战递归求 n 的阶乘#includestdio.h// 递归求阶乘intfactorial(intn){// 终止条件if(n1||n0)return1;// 递归公式returnn*factorial(n-1);}intmain(){intn;printf(请输入阶乘数);scanf(%d,n);printf(%d的阶乘为%d\n,n,factorial(n));return0;}递归必备核心必须有终止条件否则无限递归、栈溢出报错七、函数实战总结无返回值用void有返回值必须对应类型return先声明/定义后调用杜绝隐式声明报错形参是占位符实参是真实数据数量、类型必须一一对应局部变量仅限当前函数全局变量全程序通用递归必须设置终止条件避免死递归项目开发优先用函数封装拒绝全部代码堆在main里八、实战练习巩固提升大家可以自己手写练习吃透函数核心封装函数求三个整数的最大值封装函数判断闰年递归实现斐波那契数列前n项输出封装函数实现数组求和、求平均值函数是C语言从“入门”到“进阶”的关键看懂概念没用动手敲代码、调试报错、独立封装功能才是真正学会。本篇所有案例均可直接运行建议大家逐行敲写修改参数测试效果彻底吃透函数逻辑

相关新闻

当客户提前做完功课,大客户销售必须把价值力讲成利润语言

当客户提前做完功课,大客户销售必须把价值力讲成利润语言

客户在接触销售之前,已经用AI搜索引擎把供应商和方案筛过一遍。销售再从头讲产品功能,只会被客户当成没有增量信息的噪音。价值力要做的是把对话拉到客户的利润、投资和经营风险上。一、先判断客户已经走到采购七阶段的哪一步 PSS⁵ 体系力里&#xff0c…

2026/8/16 1:54:24 阅读更多 →
Linux系统关机命令poweroff详解:从原理到实战应用

Linux系统关机命令poweroff详解:从原理到实战应用

1. 项目概述:从“关机”这个简单动作说起在Linux世界里,关机这个操作,远比你想象的要复杂和有趣。对于很多刚接触Linux的朋友,尤其是从Windows转过来的用户,可能会觉得“关机不就是点一下按钮吗?”但在服务…

2026/8/16 1:54:24 阅读更多 →
Java Web项目部署实战:从Tomcat到Docker的完整指南

Java Web项目部署实战:从Tomcat到Docker的完整指南

1. 项目概述:从代码到服务的最后一公里 每次在本地IDE里把项目跑得顺风顺水,看着浏览器里漂亮的界面,心里总会冒出一个念头:这玩意儿怎么才能让全世界的人都能访问到?这就是我们今天要聊的核心——把一个Web项目从你的…

2026/8/16 1:53:23 阅读更多 →

最新新闻

看一看,是不是真的理解了三极管关断时刻,受到什么影响

看一看,是不是真的理解了三极管关断时刻,受到什么影响

无意间和同事讨论三极管开关电路,三极管关断时间到底是谁决定的。刚开始讨论的时候,心里觉得这么个简单电路有什么好讨论的,做过电子的谁没有用过这个电路,但是深入想想,还真没有理解到位。一开始会觉得,三…

2026/8/16 2:51:48 阅读更多 →
【Android开发日记03】新拟态支出记账APP - 已开源

【Android开发日记03】新拟态支出记账APP - 已开源

源码GitHub地址 https://github.com/HiCodeOnline/AndroidHiWalletWithNeumorphismAPP效果图

2026/8/16 2:51:48 阅读更多 →
锂电为什么离不开 BMS?带你读懂电池管理系统底层逻辑

锂电为什么离不开 BMS?带你读懂电池管理系统底层逻辑

引言:锂电池的“隐形守护者” 在现代生活中,从智能手机到电动汽车,从无人机到储能电站,锂电池无处不在。然而,你是否想过,这些看似普通的电池背后,都隐藏着一个至关重要的“大脑”和“保镖”?它就是电池管理系统(Battery Management System, BMS)。 如果说锂电池是…

2026/8/16 2:51:48 阅读更多 →
SaaS企业如何通过NPS体系驱动客户增长与产品优化

SaaS企业如何通过NPS体系驱动客户增长与产品优化

1. 从一次“差点丢单”的复盘说起:为什么我们开始死磕NPS?去年,我们团队负责的一个核心SaaS产品,续费率出现了一个不大不小的波动。一个合作了两年多的老客户,在续约前一个月突然提出要重新评估竞品。销售和客户成功经…

2026/8/16 2:51:48 阅读更多 →
软件测试进阶指南:从题库到实战能力的转化与构建

软件测试进阶指南:从题库到实战能力的转化与构建

1. 项目概述:一份“硬核”测试资料的价值与边界最近在技术社区和不少测试交流群里,看到一份名为“软件测试期末试题及答案(史上最全),997页手淘软件测试面试真题解析”的资料被频繁提及,甚至用上了“火爆全…

2026/8/16 2:51:48 阅读更多 →
Win11 U盘无法安全弹出?深度解析占用进程与系统级解决方案

Win11 U盘无法安全弹出?深度解析占用进程与系统级解决方案

1. 问题现象与本质:为什么“安全弹出”会失败?相信很多从Windows 10升级到Windows 11的朋友,都遇到过这个让人抓狂的场景:工作结束,准备拔下U盘,右键点击系统托盘里的U盘图标,选择“弹出”&…

2026/8/16 2:50:48 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →