Days 9 函数初学
一、为什么要学函数刚学 C 语言的时候所有代码全堆在main里写重复功能要复制粘贴一大段代码又乱又难改。函数就是用来解决这个问题的 函数两大好处代码复用同一个功能只写一次想用直接调用不用反复复制代码模块化拆分把复杂程序拆成一个个独立小功能逻辑清晰找 bug、改代码都很方便。整个 C 程序必须有且只有一个main函数程序从main开始执行其他都是我们自己写的自定义函数。二、函数完整三要素定义、调用、声明1. 函数定义写函数本体实现功能标准语法拆解每一部分返回值类型函数执行完给外面返回的数据类型没有返回值写void不用写return函数名命名规则和变量一样只能字母、数字、下划线不能数字开头尽量见名知意比如is_leap_year判断闰年形参形式参数函数接收外部数据的 “占位符”只有调用函数时才会分配内存函数结束直接销毁函数体{}写具体逻辑return结束函数把结果传给调用处void函数可以省略 return。举个简单例子判断闰年函数2. 函数调用使用写好的函数语法函数名(实参1, 实参2);实参实际参数调用时真实传进去的数据可以是常量、变量、表达式规则实参的个数、顺序、数据类型必须和形参完全对应C 语言只有值传递只是把实参的值拷贝一份给形参函数内部修改形参完全不会影响外面的实参。调用上面闰年函数这里main是主调函数is_leap_year是被调函数。3. 函数声明函数原型解决编译报错C 语言代码从上往下逐行编译如果函数定义写在 main 函数下方编译器读到调用代码时找不到函数直接报错。 解决办法在 main 上方提前声明函数告诉编译器这个函数存在。声明格式去掉函数体末尾加分号完整带声明示例小总结定义在 main 上方不用声明定义在 main 下方必须提前声明。三、变量的作用域 生命周期函数配套重点1. 局部变量定义在函数内部、大括号{}里的变量就是局部变量作用域只能在当前大括号内使用外面访问不到存储位置栈区生命周期进入代码块分配内存执行完大括号直接销毁默认存储类型auto可以省略不写未初始化值是随机垃圾值一定要手动初始化。2. 全局变量定义在所有函数外面的变量作用域整个.c文件所有函数都能访问存储位置静态数据区生命周期程序运行全程存在程序结束才销毁未初始化默认自动赋值 0缺点所有函数都能修改容易乱改数据尽量少用。四、四种变量存储类型存储位置 / 特性1. auto自动变量局部默认仅局部变量可用存栈区函数结束内存释放不初始化 随机值。2. register寄存器变量局部变量专用优先存 CPU 寄存器读取更快寄存器满了自动降级为 auto 栈变量不能取地址。3. static静态变量分两种1static 修饰局部变量原本局部变量存栈static 后放到静态数据区生命周期第一次调用函数时初始化一次之后函数调用不会重新初始化程序结束才销毁作用域不变还是只能当前函数内使用不初始化默认 0适合计数场景。示例统计函数调用次数2static 修饰全局变量 / 函数限制作用域只能在当前.c文件使用其他文件无法访问避免多文件命名冲突。4. extern外部声明只用来声明变量 / 函数不分配内存告诉编译器这个变量 / 函数定义在别的文件或文件下方。五、函数传参核心值传递C 语言所有函数传参都是单向值传递调用函数时把实参的值复制一份给形参实参、形参是两块独立内存互不干扰在函数内部修改形参外部实参完全不会变化。错误示例交换两个数字失败原因只是拷贝了 a、b 的值给 x、y函数内交换的只是副本本体没变。六、课堂作业实战封装函数练习作业 1封装函数传入年月日返回当年第几天思路封装闰年判断函数is_leap_year封装get_dayofyear(int y,int m,int d)累加前面月份总天数加上当日二月天数根据闰年判断是 28/29 天。作业 2字符串倒置函数封装不使用库函数七、新手踩坑总结函数定义在 main 下方忘记写函数声明编译报错return 返回值和函数定义的返回类型不一致会隐式转换丢失数据局部变量不初始化直接使用读取随机垃圾值static 局部变量误以为每次调用都会重新初始化传参误以为修改形参能改变实参不清楚 C 语言只有值传递函数名和库函数重名比如 printf造成程序异常void 函数写 return 数字语法错误。八、学习感悟函数是 C 语言从 “简单代码” 进阶 “模块化程序” 的分水岭学会封装函数之后写复杂逻辑清晰很多。尤其是 static 静态局部变量、值传递这两个点一开始很难理解多写几次计数、交换的练习就能吃透。后续学指针之后还能解决 “值传递无法修改外部变量” 的问题继续加油

相关新闻

3分钟掌握Visual Syslog Server:Windows系统日志监控终极解决方案

3分钟掌握Visual Syslog Server:Windows系统日志监控终极解决方案

3分钟掌握Visual Syslog Server:Windows系统日志监控终极解决方案 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog Visual Syslog Server for Windows…

2026/7/30 6:28:44 阅读更多 →
做了3年AI训练师,我为什么劝你早点入局?

做了3年AI训练师,我为什么劝你早点入局?

一、先说结论:这3年,我亲眼看着这个行业翻了天 3年前入行的时候,身边没人知道“AI训练师”是干什么的。家里人问我,我说“就是教AI认东西”,他们似懂非懂地点点头。 3年后的今天,这个岗位已经从“无人知晓…

2026/7/30 6:28:44 阅读更多 →
AI数据助手DataAgent:自然语言转SQL的智能实践

AI数据助手DataAgent:自然语言转SQL的智能实践

1. 项目概述:当数据工程师遇上智能助手凌晨三点的写字楼里,最后一位数据工程师终于关掉了SQL编辑器。这样的场景正在被一个叫DataAgent的智能数据助手改写——作为奇麟云数仓的最新生产力工具,它正在用AI重构传统的数据处理流程。不同于普通的…

2026/7/30 6:28:44 阅读更多 →

最新新闻

各家大模型详解与对比:2026 版

各家大模型详解与对比:2026 版

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun 2026 年的模型市场有点乱,新版本隔几周就冒一个。这篇文章把主流模型理了一…

2026/7/30 6:37:49 阅读更多 →
回溯与分支限界:从暴力穷举到智能搜索的算法核心

回溯与分支限界:从暴力穷举到智能搜索的算法核心

1. 从“暴力穷举”到“聪明搜索”:回溯与分支限界的本质在算法设计的工具箱里,面对那些需要在一大堆可能性里找出最优解或可行解的问题,新手最容易想到的就是“暴力穷举”——把所有情况都试一遍。比如经典的“八皇后问题”,把8个…

2026/7/30 6:37:49 阅读更多 →
Python安装与环境配置全攻略:从版本选择到IDE配置的避坑指南

Python安装与环境配置全攻略:从版本选择到IDE配置的避坑指南

1. 为什么你需要一份“超级详细”的Python安装指南? 如果你点开了这篇文章,大概率是刚准备踏入Python世界的新手,或者是在新电脑上重新搭建环境时,被网上那些语焉不详、版本混乱的教程给搞懵了。Python安装,听起来像是…

2026/7/30 6:37:49 阅读更多 →
谭浩强C语言第五版核心知识点与实战复习指南

谭浩强C语言第五版核心知识点与实战复习指南

1. 项目概述:为什么需要一份“谭浩强C语言”的专属复习指南?如果你手边正放着那本经典的《C语言程序设计(第五版)》,封面是谭浩强教授的名字,那你大概率正处在一个关键节点:可能是期末考试前的冲…

2026/7/30 6:37:48 阅读更多 →
DyberPet桌面宠物框架:5分钟创建你的专属二次元桌面伙伴终极指南

DyberPet桌面宠物框架:5分钟创建你的专属二次元桌面伙伴终极指南

DyberPet桌面宠物框架:5分钟创建你的专属二次元桌面伙伴终极指南 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 你是否厌倦了单调的桌面背景?是否渴望在繁…

2026/7/30 6:37:48 阅读更多 →
玄铁C910:高性能RISC-V处理器架构解析与应用实践

玄铁C910:高性能RISC-V处理器架构解析与应用实践

1. 玄铁C910:RISC-V高性能处理器的新标杆如果你最近关注处理器架构,尤其是开源指令集RISC-V的动向,那么“玄铁C910”这个名字你一定不陌生。它不是实验室里的概念产品,而是已经大规模商用的高性能RISC-V处理器核心。简单来说&…

2026/7/30 6:36:48 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻