C语言 函数概述

好 接下来 我们来讲函数

构建C程序的最佳方式 就是模块化程序设计
C语言中 最基本的程序模块被称为 函数

所以 这个知识点的重要性不言而喻

这里 我们讲个故事
诸葛亮六出祁山时 为了逼司马懿出战 派人送给力司马懿一件女人衣服
司马懿只是为使者 诸葛亮的饮食起居
使者感叹丞相 吃的很少 每天睡不了多久 责罚都要亲自监工
在这里插入图片描述
看着好像诸葛丞相什么都做 但这也是压垮他的根本原因 在任何工作 特别是我们程序设计中 这种工作集中化都是非常被排除的
推广分工流程

读多少行的程序能让你不头疼?
假如系统提供的函数printf0)由10行代码替换:那么你编过的程序会成什么样子?
实际上一个 printf0 有上千行代码
main()中能放多少行代码?
如果所有代码都在main0)中,怎么团队合作?
如果代码都在一个文件中。怎么团队合作?

什么是模块化程序设计?

将解决一个复杂问题的抽象任务,分解成了若干个能够实现的简单问题的具体任务。这种方式被称为模块化程序设计

模块分解的基本原则 包含三个方面
1 分而治之
从组成上看 一个系统由许多功能组成,各个功能模块彼此有一定的联系,功能各自独立
从开发过程上看,不同的模块 可能由不同的人开发

2 自顶向下,逐步求精
我们模块化开发 顶部都只是一些粗糙的问题提案 负责提出问题 逐渐向下分成多个详细的解决方案,是一个越来越精细描绘怎么做的过程
简单说 将一个大问题 逐步分解成多个小的解决方案 逐步解决问题
在这里插入图片描述
3 信息隐藏
模块对不需要使用该模块信息的不允许访问,模块之间只交换必要信息

模块化程序的特点:

1 程序变得简短且结构清晰,可读性好。
2 程序模块相对独立,简化设计,有助于控制程序设计的复杂性。
3 各模块功能单一并且相互独立,能够限制错误的范围,提高程序的可靠性。
4 程序采用积木式组装模块,模块可以共享,减少重复代码,提高程序开发的效率。
5 模块的裁剪、移植和扩充非常方便,能够提高程序的可维护性。
6 有利于集体开发,分工合作,缩短程序的开发周期。

C语言的模块化程序结构

1 C语言是通过函数来实现模块化程序设计的。
2 一个C程序由一个或多个源程序文件组成。
3 一个源程序文件由一个或多个函数组成,有且只有一个main()主函数。
4 主函数可以放在任何一个源文件中,maimO)主函数与程序中其他函数按任意顺序排列。

C程序各函数之间的关系 如下图
由主函数调用其他函数
在这里插入图片描述
在这里插入图片描述
函数的分类
按用户使用的角度划分
1 标准库函数 包括:
ANSIC定义的标准库函数
1.1 符合 ANSIC 标准的C 语言编译系统提供这些函数
1.2 函数分为输入/输出函数、数学函数、字符函数、字符串处理函数、格式转换函数、文件存取函数等几类。
第三方库函数
1.1 由其他厂商开发的C语言函数库
1.2 可以用来扩充C语言在图形、网格、数据库等方面的功能。
2 用户自定义函数
经过包装之后,也能形成函数库,供其他用户使用

自定义函数是需要开发人员根据集体情况 自行编写的 编写C程序某种意义上说 就是编写若干个自定义函数

按函数形式 函数可分为
有参函数和无惨函数
有参函数 就是 无论函数的定义与调用 都要写明参数 主调函数通过参数向被调函数传递信息
无惨函数 则表示 定义和调用不需要传递参数 主调与被调函数之间不需要传递信息

按函数的作用范围划分
分为 外部函数和内部函数
外部函数可以在整个程序中被调用
而内部函数只能在本文件中被调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3015470.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AI论文速读 |2024[IJCAI]TrajCL: 稳健轨迹表示:通过因果学习隔离环境混杂因素

题目: Towards Robust Trajectory Representations: Isolating Environmental Confounders with Causal Learning 作者:Kang Luo, Yuanshao Zhu, Wei Chen, Kun Wang(王琨), Zhengyang Zhou(周正阳), Sijie Ruan(阮思捷), Yuxuan Liang(梁宇轩) 机构&a…

leetcode-字符串的排列-100

题目要求 思路 1.因为只涉及到字符,因此可以进行排序 2.创建临时字符串,当临时字符串temp的长度等于str的长度,作为判出条件。 3.创建一个标记的数组,每次在temp中插入一个字符,便在对应的数组下标设置为1&#xff0c…

国家电网某地电力公司网络硬件综合监控运维项目

国家电网某地电力公司是国家电网有限公司的子公司,负责当地电网规划、建设、运营和供电服务,下属多家地市供电企业和检修公司、信息通信公司等业务支撑实施机构。 项目现状 随着公司信息化建设加速,其信息内网中存在大量物理服务器、存储设备…

美团KV存储squirrel和Celler学习

文章目录 美团在KV存储squirrel优化和改进在水平方向1、对Gossip协议进行优化 在垂直扩展方面1、forkless RDB数据复制优化2、使用多线程,充分利用机器的多核能力 在高可用方面 美团持久化kv存储celler优化和改进水平扩展优化1、使用bulkload进行数据导入2、线程模型…

linux启动常见问题

一、忘记root密码 日常生活中,我们会接触到很多账号和密码,而这些账号和密码我们不能都很好的记忆,对于linux也是一样的,如果root密码忘记了怎么办?岂不是都无法登陆使用Linux了?现在我就教各位&#xff0c…

一文了解CRM系统帮助中心:从认识到搭建

客户关系管理(CRM)系统是企业的一个重要部分。而CRM系统帮助中心为用户提供了便捷的支持服务,提升了用户体验,减少了企业运营成本。本文将从认识到搭建,带你全面了解CRM系统帮助中心。 一、认识CRM系统帮助中心 CRM系统…

智慧交通系统:未来出行,从这里开始

随着城市化进程的加快,交通拥堵、事故频发、停车难等问题日益凸显,传统交通管理模式已难以满足现代社会的需求。智慧交通系统作为解决这些问题的关键,通过集成创新技术,实现交通管理的智能化、信息化,提高交通系统的运…

流量分析利器arkime的学习之路(三)---结合Suricata攻击检测

1、基础 Arkime安装部分参考《流量分析利器arkime的学习之路(一)—安装部署》 在此基础上安装suricata软件并配置。 2、安装suricata yum install suricate 可能依赖的文件包括libyaml,PyYAML,这些可能在之前安装arkime或者其他…

教程分享:如何为跨境电商、外贸、国际展会制作二维码?

不论是做跨境电商、在全球做产品推广,还是国外的餐厅运营、参加国际展会,或者是做创意户外广告、制作个性化的个人名片、有趣的产品包装……只要是在国外使用二维码,你都可以在QR Tiger去制作您需要的二维码! 一、认识QR Tiger 二…

RVM(相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)、RVM-Adaboost(相关向量机结合Adaboost)

当我们谈到RVM(Relevance Vector Machine,相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)以及RVM-Adaboost(相关向量机结合AdaBoost算法)时,每种模型都有其独特的原理和结构。以…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置…

idea修改maven项目名称及子模块名称

一、修改目录名称 shift F6修改目录,选择“rename module and dictionary”。![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/43efd9c6af6e43ad9656455db94b37a2.png)二、修改子项目pom的 三、修改父项目pom的 四、刷新maven项目

消费金融平台公司如何做大做强自营产品

本文来自于2019年的某次内部分享沟通会,部分敏感内容已做删减。

Facebook之道:探索社交媒体领域的未来

随着科技的不断发展,社交媒体已经成为我们日常生活中不可或缺的一部分。而在这个领域中,Facebook一直是引领者和领头羊。然而,随着时间的推移,社交媒体领域正在发生着翻天覆地的变化,而Facebook又将何去何从&#xff1…

Meta的Ray-Bans将是最好的AI伴侣眼镜

早在2023年,当我第一次尝试雷朋眼镜时,我就带着智能眼镜自拍。但那个时候,很少有人意识到它是一副智能眼镜。 现在2024年雷明这种眼镜兼作蓝牙耳机,与iOS或安卓系统配对,并与一个专门的元视图应用程序同步。眼镜臂底部…

Scanner中next()、nextInt()、nextLine()、hasNext()、hasNextInt()的使用方法及注意事项

目录 1、next()、nextInt()、nextLine()的使用方法及区分 2、循环时如何使用hasNext方法 3、用hasNextInt()作为判断下一个输入是否为数字需要配合next()方法使用 1、next()、nextInt()、nextLine()的使用方法及区分 三者简单定义 next():此方法遇见第一个有效字符…

厂家自定义 Android Ant编译流程源码分析

0、Ant安装 Windows下安装Ant: ant 官网可下载 http://ant.apache.org ant 环境配置: 解压ant的包到本地目录。 在环境变量中设置ANT_HOME,值为你的安装目录。 把ANT_HOME/bin加到你系统环境的path。 Ubuntu下安装Ant: sudo apt…

期权买方要保证金吗?期权交易保证金怎么计算?

今天期权懂带你了解期权买方要保证金吗?期权交易保证金怎么计算?期权保证金其实就是你在购买期权合约时,作为卖方要付出的那一小笔钱。简单说,就是为了防止你违约,给交易双方一个保障的“小押金”。 期权买方要保证金吗…

Python:实现b站登录并保存登录信息(baidu Comate插件帮助我逐行分析代码)

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…

消费增值:让每一分钱都增值的新时代消费模式

是否曾思考过,在每次购物或服务消费时,你支付的款项究竟流向了何方?如今,我想向你揭示一种颠覆性的消费理念——消费增值。它不仅仅满足你的日常消费需求,更能让你的资金在消费的同时实现增值,为你打开全新…