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://www.rhkb.cn/news/321735.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适合小白使用的编译器(c语言和Java编译器专属篇)

本节课主要讲如何安装适合编程小白的编译器 废话不多说,我们现在开始 c/c篇 首先,进入edge浏览器,在搜索框输入visual studio ,找到带我画圈的图标,点击downloads 找到community版(社区版)的下…

简易录制视频做3D高斯

系统环境 ubuntu20 ,cuda11.8,anaconda配置好了3D高斯的环境。 具体参考3D高斯环境配置:https://blog.csdn.net/Son_of_the_Bronx/article/details/138527329?spm1001.2014.3001.5501 colmap安装:https://blog.csdn.net/Son_of…

最后一块石头的重量 II ,目标和,一和0

最后一块石头的重量 II(0-1背包问题 将石头尽可能分为两堆重量一样的,进行相撞则为0 class Solution {public int lastStoneWeightII(int[] stones) {int sum0;for(int x:stones){sumx;}int targetsum/2;int[] dpnew int[target1];//dp[j]表示最大石堆的…

分享5款对工作学习有帮助的效率软件

​ 今天再来推荐5个超级好用的效率软件,无论是对你的学习还是办公都能有所帮助,每个都堪称神器中的神器,用完后觉得不好用你找我。 1.文件复制——ClipClip ​ ClipClip是一款功能强大、操作简便的文件复制与管理软件。它改变了传统的复制粘…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具) 场景来源 去年单位内部的一次素拓活动,分工负责策划设置其中的“你画我猜”环节,网络上搜集到题目文字后,想着如何快速做成对应一页一页的PPT。第一时间想…

java入门详细教程——day01

目录 1. Java入门 1.1 Java是什么? 1.2 Java语言的历史 1.3 Java语言的分类 1.4 Java语言的特点 1.4.1 先编译再解释运行 1.4.2 跨平台 1.5 JRE和JDK(记忆) 1.6 JDK的下载和安装(应用) 1.6.1 下载 1.6.2 安…

SAP 【MM】移动类型的科目确定<转载>

原文链接:https://blog.csdn.net/zhongguomao/article/details/134387102 移动类型的科目确定 SAP中支持控制不同移动类型所确定的总分类帐科目和账户分配,同时也支持控制用户能否改变总分类帐科目和账户分配默认值。 1、控制能否手动输入总分类帐科目…

Golang | Leetcode Golang题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; func searchMatrix(matrix [][]int, target int) bool {m, n : len(matrix), len(matrix[0])i : sort.Search(m*n, func(i int) bool { return matrix[i/n][i%n] > target })return i < m*n && matrix[i/n][i%n] target }

一起刷C语言菜鸟教程100题(15-26含解析)

五一过的好快&#xff0c;五天假期说没就没&#xff0c;因为一些事情耽搁到现在&#xff0c;不过还是要继续学习的&#xff0c;之后就照常更新&#xff0c;先说一下&#xff0c;这个100题是菜鸟教程里面的&#xff0c;但是有一些题&#xff0c;我加入了自己的理解&#xff0c;甚…

责任链模式和观察者模式

1、责任链模式 1.1 概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导…

第80天:WAF 攻防-漏洞利用HPP 污染分块传输垃圾数据

案例一&#xff1a;安全狗-SQL 注入-知识点 正常访问会被拦截 like绕过 对比成功&#xff0c;正常返回 对比失败&#xff0c;不返回 post绕过 这里需要支持post注入。这里是我自己改的REQUEST 这里其实安全狗可以开启post验证&#xff0c;看别人知不知道能开启了 过滤了 模拟…

贪心算法应用例题

最优装载问题 #include <stdio.h> #include <algorithm>//排序int main() {int data[] { 8,20,5,80,3,420,14,330,70 };//物体重量int max 500;//船容最大总重量int count sizeof(data) / sizeof(data[0]);//物体数量std::sort(data, data count);//排序,排完数…

荟敏堂·中医优势专科建设新质生产力发展论坛在京召开

原题&#xff1a;《荟敏堂中医优势专科建设新质生产力发展论坛在京召开——周超凡中医治则学思想传承研讨会成功举办》 会议现场照片 仟江水商业电讯&#xff08;5月8日 北京 委托发布&#xff09;日前&#xff0c;周超凡中医治则学思想传承研讨会暨中医优势专科建设新质生产力…

QT实现Home框架的两种方式

在触摸屏开发QT界面一般都是一个Home页面&#xff0c;然后button触发进入子页面显示&#xff0c;下面介绍这个home框架实现的两种方式&#xff1a; 1.方式一&#xff1a;用stackedWidget实现 &#xff08;1&#xff09;StackedWidget控件在Qt框架中是一个用于管理多个子窗口或…

数据挖掘流程是怎样的?数据挖掘平台基本功能有哪些?

数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 数据挖掘的流程是&#xff1a; 清晰地定义出业务问题&#xff0c;确定数据挖掘的目的。 数据准备: 数据准备包括&am…

记一次java进程频繁挂掉问题排查修复

前言 最近业务部门有个java服务进程会突然无缘无故的挂掉&#xff0c;然后这个服务会产生一堆类似hs_err_pid19287.log这样的日志。业务部门负责人就把hs_err_pidxxx的日志发给我&#xff0c;让我帮忙看下问题。本文就来回顾一下&#xff0c;我是如何帮业务部门进行问题排查 …

PyGame 文字显示问题及解决方法

在 Pygame 中显示文字时可能会遇到一些问题&#xff0c;例如文字显示不清晰、字体不正确或者文字位置不准确等。以下是一些常见的问题及其解决方法&#xff0c;具体情况可以看看情况。 1、问题背景 一位用户在使用 PyGame 库进行游戏开发时&#xff0c;遇到了一个问题&#xf…

Chromium编译指南2024 Windows11篇-GN 工具生成构建文件(六)

前言 在《Chromium编译指南2024&#xff08;五&#xff09;》我们已经获取了 Chromium 的源代码并且同步了相关的第三方依赖。 现在&#xff0c;我们将进一步学习如何使用 GN 工具生成构建文件&#xff0c;为后续的编译工作做好准备。 1. 使用gn工具生成构建文件 再次在Win…

第一个C++项目

文章目录 一、新建项目1.打开软件&#xff0c;选择“创建新项目”2.新建项目栏中&#xff0c;按自己的需求来设置项目模板&#xff0c;项目名称和文件存放位置&#xff0c;设置好后点击“确认”3. 点击“Next”4. 按照自己需求设置&#xff0c;设置完后&#xff0c;点击“Next”…

R语言【Tidyverse、Tidymodel】机器学习

机器学习已经成为继理论、实验和数值计算之后的科研“第四范式”&#xff0c;是发现新规律&#xff0c;总结和分析实验结果的利器。机器学习涉及的理论和方法繁多&#xff0c;编程相当复杂&#xff0c;一直是阻碍机器学习大范围应用的主要困难之一&#xff0c;由此诞生了Python…