当前位置: 首页 > article >正文

详解C语言初阶之函数

.main函数第一个函数是我们的main函数它无处不在main函数被称之为我们的入口函数程序在运行时从main函数进入从main函数出来main函数其实就是整个程序功能的集合所有的功能必须被包含在main里面才可以被运行预处理命令宏定义全局变量什么的当然要优先处理再次不讨论这些。我们看个例子吧上图中一个很简单的打印却发现main函数之外的打印出现了错误由此说明main的重要型。说白了函数就是一个个功能的集合内部也是一串串代码组成的程序是程序的基本单元又被叫作子程序我们将函数分为库函数和自定义函数再次我们主要了解自定义函数。2.自定义函数所谓自定义函数就是我们自己写的函数我们自己设置了他们的功能将他们进行封装在某些时候进行调用。如在这里我们把一个简单地加法运算进行了封装。只要在main函数里调用这个定义函数我们即可实现加法的功能。那么有人问了我们为什么非要写一个函数呢看起来就很麻烦直接写到main函数里不就行了吗2.1 函数的的封装和面向过程的思维实际上我们在应用中不可能写如此简单的小程序我们会写很长的代码比如我们在刚刚的程序中加上减法、除法、乘法、求余、求次方等等很多的功能如果我们全写在main函数里代码的可读性就会变得极差而且main函数不仅会变得十分冗长对于代码的调试和修改以及后期维护都难以进行。因此我们把所有功能都进行封装打包扔到我们自己的一个函数里每一个函数都有想对应的功能一般来说我们要尽量加大自定义函数的独立性方便函数的封装和后期维护如此一来我们就有了业务逻辑想要程序实现的功能如加法就在main函数里面调用Add和功能逻辑再对Add进行定义main函数就变得十分简洁明了只需要用到哪些功能时直接调用就行了我们将功能逻辑的功能称之为解耦。在编写代码时我们要首先知道我们想要实现什么功能在主函数里对某一个可以实现该功能的函数先进行调用等主函数完备后再讲我们封装的功能进行定义以配合我们的调用。我们把这种编程思维称之为面向过程即先明白要实现什么功能对象后还需要对每一个功能进行具体构建对象的构建而不是直接调用该功能比如我们要木材就必须要自己种木头浇花施肥然后再取用而不能直接去木材市场买我们需要过程。3.函数的组成函数需要有定义之后才能调用某些时候还需要声明我们先不谈声明函数的定义由四部分组成返回值也叫函数类型、函数名 、函数体 、形参函数的调用由三部分组成返回值、函数名、形参3.1函数的命名法为了增加可读性和减少维护成本我们通常把函数的命名方法定为见名知意将名字按照大驼峰法进行命名如加法及 Add,我的打印及 MyPrint函数名以英文单词或者英文单词的简写构成每个单词的第一个字母大写。3.2函数的返回值函数的返回值类型有int、char、double等各种类型具体看你需要的功能。如在刚刚的Add中我们需要Add函数返回x和y的和即返回一个整型便于函数值的接收因此我们需要在Add前面加int如此我们便可以用int ret来接收函数值。3.2.1void类型在各种函数的返回值中有一个奇怪却又常用的类型叫作void也就是空的意思其实它就是个占位子的啥都不返回我就站这儿告诉别人这里这个座有人了如图所示我们把printf放在了Add里面如此来我们就不需要接收Add的返回值来进行打印了这个函数本身就有了打印的功能因此我们把返回值也就是函数类型写为void也就是没有返回值。比如main函数也可以直接void main。补充1.通常情况下我们并不建议这么写因为我们需要函数功能的独立性减少多余的联系后面大家会慢慢理解2.main 函数建议以int作为返回值代码规范是一个优秀程序员的基本素养。特立独行并不会让你变得优秀优秀的代码是大多数人都能明白的代码3.既然返回值已经为空那我直接不写不行吗为什么还要写一个void呢注意函数默认是有返回值不写的话会进行强制返回强制类型转换为整型默认返回值为int有了void就不会有其他返回值类型来占座3.3形参与实参函数调用括号里的参数叫作实参函数定义括号里的参数叫作形参。实参就是试试在在的真是的数据就如同一张桌子你砸了它一角那这张桌子一角就真的没了。形参本质上是对实参的临时拷贝程序从主函数中运行到函数的调用时就会自动在主函数前寻找该函数的定义若发现定义就会发生形参实例化即将实参拷贝到形参里还是一张桌子发生形参实例化临时拷贝之后就变成了两张桌子现在你砸了第二张桌子那第一张桌子依旧完好无损。而不管第二张桌子是是否损伤只要出了它所在的代码块它就会被销毁掉而不能被其他函数继续使用所以我们称之为临时拷贝。

相关文章:

详解C语言初阶之函数

.main函数第一个函数是我们的main函数,它无处不在,main函数被称之为我们的入口函数,程序在运行时,从main函数进入,从main函数出来,main函数其实就是整个程序功能的集合,所有的功能必须被包含在m…...

四路触控 + 震动马达 + 0.71/1.28 双目光屏 + 三轴姿态 + 四博小助手 AI 平台

四路触控 震动马达 0.71/1.28 双目光屏 三轴姿态 四博小助手 AI 平台1. 方案定位四博 AI 双目是一套面向 AI 音箱、AI 桌宠、儿童陪伴、学习终端、IP 潮玩、品牌智能客服、智能家居入口 的多模态 AI 硬件方案。方案以 ESP32-S3R8 16M Flash VB6824 语音前端 为核心&#…...

如何彻底解除Navicat试用期限制:macOS智能重置方案完整指南

如何彻底解除Navicat试用期限制:macOS智能重置方案完整指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为…...

如何快速搭建Sunshine游戏串流服务器:打造个人专属云游戏平台

如何快速搭建Sunshine游戏串流服务器:打造个人专属云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine游戏串流服务器是一个完全开源的自托管游戏流媒体…...

深度解析:如何构建专业高效的完整网页截图解决方案

深度解析:如何构建专业高效的完整网页截图解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extensio…...

别再只盯着L1了!手把手教你用GSS7000测试GPS L5信号(附PosApp实战避坑指南)

别再只盯着L1了!手把手教你用GSS7000测试GPS L5信号(附PosApp实战避坑指南) 当实验室里的GNSS接收机开始支持L5频段时,许多工程师的第一反应往往是"这个新频段该怎么测?"不同于成熟的L1测试流程,…...

别再只调参数了!手把手教你用示波器调试激光打标机的Q驱动板(附RF信号实测波形)

激光打标机Q驱动板实战调试指南:从示波器波形到故障定位 激光打标机在长时间运行后,Q驱动电路板故障是导致出光异常的高发问题。许多工程师习惯通过反复调整参数来解决问题,但这种方法往往治标不治本。本文将带你用示波器直击问题核心&#…...

字节大模型二面:你的 Agent 服务是如何保证高可用和稳健性的?

1. 题目分析 做过 Agent 开发的人都知道,让 Agent 在 Jupyter Notebook 里跑通一个 demo 和让它在生产环境里稳定服务是两个完全不同的事情。Demo 阶段你只需要关心能不能跑出正确结果,而到了生产环境,你还得关心LLM API 挂了怎么办、工具调…...

拆解5G基站内部通信:手把手图解CU与DU之间的F1协议(含F1-C/F1-U全流程)

拆解5G基站内部通信:手把手图解CU与DU之间的F1协议(含F1-C/F1-U全流程) 想象一下5G基站内部如同一个高度协同的快递分拣中心:中央枢纽(CU)负责全局调度,而分布在城市各处的配送站(DU…...

ENACT基准:评估视觉语言模型在具身认知中的关键能力

1. 项目背景与核心价值 具身认知(Embodied Cognition)正成为AI领域的前沿方向,它强调智能体通过与环境的物理交互来发展认知能力。而视觉语言模型(VLMs)作为多模态AI的代表,如何评估其在具身场景中的世界建…...

AAOS 14多屏模拟器实战:从源码编译到多用户、多区域音频配置全解析

AAOS 14多屏模拟器深度实战:从源码编译到多用户音频配置全解析 在智能座舱快速迭代的今天,车载屏幕数量正以惊人的速度增长。从传统的中控仪表双屏配置,到如今后排娱乐屏、副驾娱乐屏甚至车顶折叠屏的加入,多屏协同已成为智能汽车…...

XHS-Downloader:5分钟掌握小红书无水印内容下载的终极指南

XHS-Downloader:5分钟掌握小红书无水印内容下载的终极指南 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...

115网盘Kodi插件终极指南:轻松实现云端高清视频播放

115网盘Kodi插件终极指南:轻松实现云端高清视频播放 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 还在为本地存储空间不足而烦恼吗?想要在Kodi中直接播放115网盘…...

DS4Windows终极指南:在Windows上快速使用PS4/PS5手柄的完整方案

DS4Windows终极指南:在Windows上快速使用PS4/PS5手柄的完整方案 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 想让你的PlayStation手柄在Windows电脑上也能畅玩各种游戏吗&a…...

League Akari:英雄联盟客户端全能工具箱终极指南

League Akari:英雄联盟客户端全能工具箱终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟游戏中重复…...

如何用VLC for Android解决你的移动媒体播放痛点?

如何用VLC for Android解决你的移动媒体播放痛点? 【免费下载链接】vlc-android VLC for Android, Android TV and ChromeOS 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-android 你是否曾经遇到过这样的尴尬时刻:在长途旅行中下载了一部精…...

抖音内容采集架构革命:douyin-downloader的技术实现与效能优化

抖音内容采集架构革命:douyin-downloader的技术实现与效能优化 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...

3大核心优势:为什么FakeLocation是Android位置模拟的最佳选择

3大核心优势:为什么FakeLocation是Android位置模拟的最佳选择 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 你是否曾经遇到过这样的情况:想要在社交软件…...

别再手动改代码格式了!用IDEA的CheckStyle插件一键统一团队编码规范(附Google/Sun风格配置)

告别代码风格混乱:用IDEA CheckStyle插件打造团队统一编码规范 上周Review代码时,我发现团队里有人用驼峰命名变量,有人用下划线;有人把大括号放在行尾,有人另起一行;还有人坚持每行80字符,而有…...

ETA6198,32V输入耐受电压,2.5A开关模式电池充电器,超低1uA电池端静态电流。

1.描述ETA6198是一款高效率开关型锂离子电池充电器,可为电池提供高达2.5安培的充电电流。充电过程中,该芯片采用专属控制方案,省去了传统恒流控制所需的电流检测电阻,不仅大幅提升充电效率、缩短充电时长,还能降低整体…...

游戏PBR材质自动生成:从低分辨率截图到次世代渲染

1. 项目背景与核心价值 去年在为一个游戏项目做美术资源优化时,我们遇到了一个典型问题:如何将大量低分辨率的模拟器截图转化为可用于次世代引擎的PBR材质。传统方法要么丢失细节,要么需要美术人员手动重绘,成本高得离谱。这个项目…...

新手避坑指南:用Arduino UNO R4 WIFI和MQTTX搭建你的第一个物联网项目(附完整代码)

Arduino UNO R4 WIFI与MQTTX物联网实战:从零搭建智能气象站 开篇:为什么选择这个组合? 刚拿到Arduino UNO R4 WIFI开发板时,我和大多数初学者一样兴奋又迷茫。这块板子最吸引人的地方在于它内置了ESP32-S3 WiFi模块,…...

3分钟快速找回:手机号查QQ号Python工具终极指南

3分钟快速找回:手机号查QQ号Python工具终极指南 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号而无法登录?或者换了新手机后,只记得手机号却找不到对应的QQ账号&#xff1…...

AI助手插件生态库:构建企业级AI编码助手工具箱

1. 项目概述:一个为AI编码助手打造的插件生态库如果你和我一样,每天都在和Claude Code、Cursor或者Gemini这类AI编码助手打交道,那你肯定也遇到过这样的时刻:助手很聪明,但总感觉它离你的日常工作流还差那么一点“默契…...

探索KMS智能激活:为Windows和Office提供稳定授权的完整方案

探索KMS智能激活:为Windows和Office提供稳定授权的完整方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在数字化工作环境中,稳定的系统授权是高效生产力的基石。KMS_…...

算完这笔账,我失眠了:单收入线 vs 双收入线,十年后差距100万

为什么“多一条收入线”是职场人最该掌握的技能不是让你辞职,是让你不怕被辞去年年底,我一个朋友被裁了。 他在一家互联网中厂做了五年,技术骨干,绩效一直不错。裁员的理由是“业务调整”,整个部门端掉。N1拿了大几万&…...

年终奖递延、期权绑定、竞业协议——跳槽前必须搞清楚的5个HR话术陷阱

年终奖递延、期权绑定、竞业协议——跳槽前必须搞清楚的5个HR话术陷阱这些字没写进Offer,等于白签先讲两个真事。 朋友A,年后面试通过,HR电话里说“年终奖大概3-5个月,我们公司都有的”。他没让写进Offer,入职干了10个…...

程序员接私活的正确方式:报价、合同、交付、收款全流程指南

程序员接私活的正确方式:报价、合同、交付、收款全流程指南从第一单到稳定接单,这篇帮你避开我踩过的所有坑先说我自己的经历。 第一次接私活,是前同事介绍的。一个小程序,对方说“很简单,两三天就能搞定”。我没报价&…...

3分钟掌握网盘直链下载助手:八大网盘一键获取真实下载链接的终极解决方案

3分钟掌握网盘直链下载助手:八大网盘一键获取真实下载链接的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

“薪资open”“不设上限”:谈薪资时HR的5种套路及反杀话术

“薪资open”“不设上限”:谈薪资时HR的5种套路及反杀话术亲身踩坑总结,学会至少多拿30%这几天好几个朋友找我吐槽:面试聊得挺好,一到谈薪就被HR拿捏得死死的。 “你期望多少?” “我们预算有限。” “先进来&#xff…...