我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解C语言初阶之函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解C语言初阶之函数

 1.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形参与实参

函数调用括号里的参数叫作实参,函数定义括号里的参数叫作形参。

实参就是试试在在的真是的数据,就如同一张桌子,你砸了它一角,那这张桌子一角就真的没了。

形参本质上是对实参的临时拷贝(程序从主函数中运行到函数的调用时,就会自动在主函数前寻找该函数的定义,若发现定义,就会发生形参实例化,即将实参拷贝到形参里),还是一张桌子,发生形参实例化(临时拷贝)之后,就变成了两张桌子,现在你砸了第二张桌子,那第一张桌子依旧完好无损。而不管第二张桌子是是否损伤,只要出了它所在的代码块,它就会被销毁掉,而不能被其他函数继续使用,所以我们称之为临时拷贝。

上图,我们发现,在函数定义内拷贝参数改变的值并不会影响原值。这种参数传递方式我们叫做传值。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解C语言初阶之函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言进阶之字符串查找库函数详解

字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中,下面这篇文章主要给大家介绍了关于C语言进阶之字符串查找库函数的相关资料,需要的朋友可以参考下
2023-01-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录