C语言 函数——函数的定义、调用和参数传递

目录

模块化编程(Modular Programming)

函数的分类

函数的定义

使用函数编程的好处

函数调用的基本方式

函数调用时的数据传递

函数调用的过程

main函数的特殊性


大话三国

分而治之

如果将main()函数比作诸葛亮,……?

一个函数中适合放多少行代码?

*1986年IBM的研究结果:多数有错误的函数大于500行

*1991年对148,000行代码的研究表明:小于143行的函数更易于维护

分而治之(Divide and Conquer,Wirth,1971)

*把一个复杂的问题分解为若干个简单的问题,提炼出公共任务,把不同的功能分解到不同的模块中

*复杂问题求解的基本方法,模块化编程的基本思想

模块化编程(Modular Programming)

函数(Function)

构成C语言程序的基本模块,模块化编程的最小单位

C程序的逻辑结构

一个C程序由一个或多个源程序文件组成

一个源程序文件由一个或多个函数组成

可把每个函数看作一个模块(Module)

函数的分类

标准库函数

ANSI / ISO C定义的标准库函数

*使用时,必须在程序开头把定义该函数的头文件包含进来

第三方库函数

*不在标准范围内,能扩充C语言的功能,由其他厂商自行开发的C语言函数库

自定义函数

用户自己定义的函数

*包装后,也可成为函数库,供被人使用

函数的定义

使用函数编程的好处

信息隐藏(Information Hiding,Parnas,1972)

*对于函数的使用者,无需知道函数内部如何运作

*只了解其与外界的接口(Interface)即可

*把函数内的具体实现细节对外界隐藏起来,只要对外提供的接口不变,就不影响函数的使用

*便于实现函数的复用和模块化编程

函数调用的基本方式

主调函数通过函数名调用被调函数

函数无返回值时,单独作为一个函数调用语句

调用者通过函数名调用函数

有返回值时,可放到一个赋值表达式语句

还可放到一个函数调用语句中,作为另一个函数的参数

函数调用时的数据传递

函数定义时的参数,形式参数(Parameter),简称形参

函数调用时的参数,实际参数(Argument),简称实参

函数调用的过程

每次执行函数调用时

-现场保护并为函数内的局部变量(包括形参)分配内存

-把实参值复制一份给形参,单向传值(实参形参)

-实参与形参的数目、类型和顺序要一致

程序控制权交给被调函数,执行函数内的语句

当执行到return语句或 } 时,从函数退出

从函数退出时

-根据函数调用栈中保存的返回地址,返回到本次函数调用的地方

-把函数值返回给主调函数,同时把控制权还给调用者

-收回分配给函数内所有变量(包括形参)的内存

main函数的特殊性

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

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

相关文章

性能监控工具的配置及使用 - Spotlight On Oracle(oracle)

一、 Spotlight On Oracle(oracle) 1.1. 工具简介 Spotlight是一个强有力的Oracle数据库实时性能诊断工具,提供了一个直观的、可视化的数据库活动展现。Spotlight可视化展现性能瓶颈,一旦某个指标超出可接受的阀值的话。而且,通过下钻功能,DBA可以简单、快速地追查性能…

✌2024/4/3—力扣—盛最多水的容器

代码实现: 方法一:暴力解法——遍历左右边,找出所有面积,取最大值——超时 #define min(a, b) ((a) > (b) ? (b) : (a)) #define max(a, b) ((a) > (b) ? (a) : (b))int maxArea(int *height, int heightSize) {int ans …

扭蛋机小程序搭建,线上扭蛋机带来的巨大收益

扭蛋机作为当下潮玩行业的一种,深受消费者的喜爱,市场规模不断扩大。扭蛋机在最开始的受众群体是儿童,随着市场的发展,扭蛋商品的创意越来越多,开始推出各类适合成年人的扭蛋商品。 在近几年的时间中,扭蛋…

基于单片机手机屏蔽器系统仿真设计

**单片机设计介绍,基于单片机手机屏蔽器系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机手机屏蔽器系统的仿真设计主要涉及到手机信号屏蔽的原理、单片机控制逻辑设计、仿真软件的选择与使用以…

Redis的三种部署方案

文章目录 单机模式主从复制哨兵模式分片集群 在Redis中提供的集群方案总共有三种:单机模式,主从复制集群、哨兵模式,Redis分片集群 单机模式 Redis 只运行在一台服务器上,并且所有的数据都存储在这一台服务器的内存中。 主从复制…

ROC指标交易成功,不是了解优点WeTrade众汇更正视缺点

在上篇文章中,我们了解什么是ROC指标同时也了解了ROC指标的优势,但在WeTrade众汇看来如果真正的想使用ROC指标交易成功,在了解ROC指标优点的基础上,我们更应该正视 ROC指标的缺点,我们才能在交易的路上走的更远。 下面…

JavaScript逆向爬虫——无限debugger的原理与绕过

debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字,只要遇到它,JavaScript 的执行便会在此处中断,进入调试模式。 有了 debugger 这个关键字,就可以非常方便地对 JavaScript 代码进行调试,比如使用 JavaSc…

linux重装系统步骤 包含raid【主要针对服务器重装

重装需要记录的信息 通过管理口进入系统: 1、 使用管理口ip,在浏览器中打开 并登陆进管理口界面 2、 虚拟控制台更改插件类型:如java、HTML5等,会话共享操作选择-完全访问-应用-启动虚拟控制台 需要记录信息如下: …

Linux下场景模拟--cpu、内存打满测试

Linux下场景模拟–cpu、内存打满测试 打满CPU占用 编写脚本vi /root/cpu_run_full.sh vi /root/cpu_run_full.sh填写如下内容&#xff1a; #!/bin/bash function while_run_cpu() {while true;doi2;done }function cpu_full() {for ((i0; i<$1; i));dowhile_run_cpu &am…

Pillow教程11:九宫格切图的实现方法(安排!!!)

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

【JQ】加载中动画效果,带gif图片

效果图 CSS样式 /*加载中*/ #loading-overlay {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */display: flex;justify-content: center;align-items: center; }.loading-container {position: fixed;top: 40%;le…

11.shell中的多进程实践

目录 概述实践代码执行结果 概述 shell中的多进程实践 实践 代码 #!/bin/bash# 多进程实践,以ping为例 # ping 10.35.232.130 -c2 拼两次结束check_host(){host${host_prefix}.$1if ping $host -c1 -W1 ; thenecho "$host可达"elseecho "$host不可达"…