当前位置:网站首页>函数的介绍
函数的介绍
2022-07-20 10:25:00 【吃瓜的三木】
函数是一段具有某项功能的代码,c语言中管理代码的最小单位。
把代码封装成一个一个函数,可以方便管理和调用代码
一、函数分类:
1、标准库函数: 由C语言标准委员会为C语言以函数的形式提供一些基础的功能,被封装libc.so库中, 使用时需要包含对应的头文件,通过函数名(实参)方式,即可调用标准库中的函数
2、系统函数: 是操作系统以函数接口形式提供的一系列功能,但是它不是真正意义上的函数 内存管理、文件管理、文件IO、信号处理、进程管理、进程通信、线程管理、线程同步、网络通信
3、第三方库函数: 由第三方提供的开源或者是收费的代码库 MD5 加密算法 Json 序列化、反序列化 Xml 配置文件解析
4、自定义函数 :为了更好地管理自己的代码、减少代码冗余,把代码封装成函数形式
二、函数传参
1、形参变量:函数内定义的变量都只属于它所在的函数,出了该函数就不能再用
2、普通实参与形参之间是通过赋值的方式传递数据的(单向值传递)
3、return 其实是把数据存放到一个公共区域(函数都可以访问),如果不写return语句,那么就会读取该区域原来的数值,得到一个垃圾数据
4、当数组作为函数的参数时,中括号中的长度就会丢失,需要额外增加一个变量传递数组的长度
5、数组作为函数参数传递时,传递时数组的首地址,叫做:’址传递‘,带来的好处:函数和函数的调用者可以共享同一个数组
三、设计函数的建议
1、一个函数最好解决一个问题,降低错误率,提高可读性
2、尽量减少函数之间的依赖层数(降低耦合度)
3、数据由调用者提供,结果返回给调用者(提高函数的通用性)
4、考虑函数的非法参数可以通过返回值的方式告诉调用者参数有误,也可以通过注释方式写明情况(提高函数的健壮性)
边栏推荐
- 利用神器Typora+PicGo,实现有道云不用会员就可在Markdown自动上传图片
- Chapter 1, section 6: Variables
- Excel-VBA 快速上手(九、VBA 中的跳转、退出、错误、With)
- Redis introduction
- APK打包流程
- 在 Excel 内使用 ODBC 消费 SAP ABAP CDS view
- Section 13 of Chapter 1: loop statement: for loop
- Wps2019 all macros are forbidden. You have to pay for enabling macros. How to use them for free
- Recurrent neural network (RNN)
- R语言使用逻辑回归Logistic、单因素方差分析anova、异常点分析和可视化分类iris鸢尾花数据集
猜你喜欢
第一章第十一节:循环语句while
LeetCode简单题之强密码检验器 II
ogg 抽取数据延时大
第一章第八节:简单了解数据类型
标量、向量、矩阵微积分
Section 9 of Chapter 1: the simplest user interaction
解密方舟的高性能内存回收技术——HPP GC
Implementation of form control adaptation (adaptive form) layout in WinForm_ By C code
莫比乌斯反演-小总结
Le point d'interrogation est en place! Yu Jingchuan 2013 Best think "China Space Station", stars of the Sea to navigate!...
随机推荐
数字化转型迈向深水区:银行业不断夯实科技根基
was安装报错解决方法
工程师的基本功是什么?如何练习?—学习心得分享「建议收藏」
【系统设计】分布式键值数据库
SAP Spartacus 如何根据 page layout 获得对应支持的 slots
模拟实现strcmp函数
Custom persistence layer framework myormframework (III) - framework implementation
I/o reuse: select poll epoll
自定义持久层框架MyORMFramework(三)—框架实现
Exchange 2010 SSL证书安装文档
解密方舟的高性能内存回收技术——HPP GC
基于主动学习和Wi-Fi感知的人体识别系统
R语言使用逻辑回归Logistic、单因素方差分析anova、异常点分析和可视化分类iris鸢尾花数据集
Redis data structure & General Command
没有了可用Task slot,Flink新增任务会怎样?
I/O复用 :select poll epoll
一个诡异的 JedisConnectionException: Connection refused 问题
UE4(unreal engine4)地形编辑工具中的无法显示样条线
LeetCode简单题之滑动窗口的平均值
Circular linked list of leetcode simple problem