C语言第九节--函数

以下是我在微信公众号上发的,请参考,也可以关注公众号–Mark学编程上看。

今天专题讨论函数的基础知识和应用。

为什么今天开始讲函数,因为,马上要讲指针,希望讲指针的时候,把前面的数组,今天的函数和指针结合起来讲。

不同的C语言书,往往对函数有不同的解释,这不奇怪,因为都是从不同的角度来描述函数的,就像你描述月亮一样,你在地球上,自然是把月亮描述成圆形的盘状物体,但如果你站在月球上,你可能会说,月亮是一个干燥的贫瘠的大地而已。所以,角度不同,往往形成的概念不一样,等等。这里还是要强调,不要对变量就像一个盒子,而变量名就是盒子上的标签等等的比喻太当回事,这些比喻可能对不动计算机组成的初学者可能有些帮助,但也是很误导的。这个以后还要详细讨论。要尽快过度到变量的本质上,变量名和内存地址上来。初步计划在我们完成了函数指针讨论后,就开始总结此类基础概念。真正理解程序的编译,运行上来。

好了,我们先看看大师级人物对函数的描述,我认为大师的角度启发较大。英文如下,要知道,编程来自西方,所以,英文的描述总是更准确。

Functions break large computing tasks into smaller ones, and enable people to build on what others have done instead of starting over from scratch. Appropriate functions hide details of operation from parts of the program that don’t need to know about them, thus clarifying the whole, and easing the pain of making changes

大体是说,函数(英语里数学函数也是这个词吧,FUNCTION有功能的意思,所以仔细体会)将计算大型计算任务分成众多小任务,并且使程序员能够将他人的代码拿过来使用,而不是从头开始。合适的函数能够封装实现细节,而不需要理解内部实现方式,从而使程序员重点放在整体代码上,而且使修改变得容易。翻译的一般,大体意思如此。括号内是我加的。

其实,我们已经接触过几个函数了,比如,main函数,C语言中原则上,程序中必须并且只有一个main函数。程序运行的时候,会从main函数开始,执行main函数中的部分。还有库函数,比如printf, scanf等。这些函数是编译器提供的,我们如果使用,需要在代码前面写上#include <stdio.h>, 这样才能在main函数里面使用这些函数,如果其他库函数,你要写上更多的.h,以后会知道的。这些函数不是天上掉下来的,是有人已经定义好(写好的)的函数,直接拿过来使用了,这也是函数给编程者的巨大便利。

当然,在实际工作中,我们可能需要自己定义函数,那么如何定义函数呢?函数的格式长什么样呢?

先写返回类型,就是这个函数要返回值的类型是什么,当然有的函数不返回值。关于这个返回值,有返回类型是整形,是什么什么类型,很多,还有不返回值,当然就没有类型,甚至还有个空类型。等等。初期不用太纠结,等写了不少函数后,我们再总结。

返回类型写完后,根据着的是函数名,函数名的起名规则有要求,注意遵守。函数名和变量一样尽量望文生义,尽量使用英文字母和词。

跟接着就是圆括号,里面可以有参数,也可以没有参数,有参数时,参数就相当于变量,所以,要带有类型。至于形式参数,实际参数先这么理解,定义时,函数的参数叫做形式参数,调用函数时,函数的参数是实际参数。学习编程,这些众多的,有时是不统一的中文名称,是容易混的,只要多练习编写代码,练习多了后再返回来理解这些名称,就会容易理解。如果以英文为主记忆这些名词,效果可能更好。

上面说的是函数头规则,下面就是函数体了。这么分只是帮助理解,没有其他意思。

一般另起一行,写大括号,大括号内就是你的代码了。代码的最后一句如果此函数有返回值 用return 加返回值语句。

我们举例:
在这里插入图片描述

首先,定义了一个maxNum函数,先声明(定义),后使用。如果放在main函数的下面,就需要在前面声明这个刚定义的函数。

第18行,maxNum(numa, numb) 是使用函数,规范说法是,调用函数。调用时,要在函数名后加括号,括号内加上实际参数或直接加上实际值,在这个调用这个函数时,实际参数的值,会被传入定义的那个函数体内的形式参数上。等那个定义的函数运行完毕,返回值后给这个调用函数作为调用后的结果。目前这么理解就行。好像有点复杂或拗口,不用急。等我们学习了编程中内存的概念后,可能就会明白这些东西。所以,从明天开始,讨论内存等相关知识。

请自行运行以上程序,其他不明白的查查书籍和网络,不再解释了。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UncleMark编程

获取价值后的回馈,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值