21天学习C语言-第五天

栏目: C · 发布时间: 5年前

内容简介:函数是C的核心和理念。函数在被调用时执行,当一个函数被调用,调用者会把数据作为参数传给函数,参数被函数用来执行特定的逻辑,比如求平方。接下来函数内的语句开始执行,执行完毕后把所得到的结果返回给函数调用者。

函数是C的核心和理念。

函数的定义

函数 是一个有名字的独立代码块,这个代码块能完成指定的功能,有时候会返回值给调用程序。

  1. 函数有唯一的名称。
  2. 函数是独立的,函数能不被其他打断。
  3. 函数能完成指定的功能。
  4. 函数能返回值给调用程序。

函数如何工作

函数在被调用时执行,当一个函数被调用,调用者会把数据作为参数传给函数,参数被函数用来执行特定的逻辑,比如求平方。接下来函数内的语句开始执行,执行完毕后把所得到的结果返回给函数调用者。

21天学习C语言-第五天

函数和结构化

通过使用函数,可以实现结构化编程,把实现某一功能的代码独立出来,包装成函数,在需要的地方进行调用,上图的square就是这样的代码。

结构化的好处

  1. 把一个复杂的逻辑拆分成小的任务,代码可读性高。
  2. 调试起来简单,由于函数的独立性,可以快速定位到问题的位置。
  3. 增加以后的开发效率,也就是函数的可重用性,遇到重复或者相似的功能,代码可直接拿过来用。

如何结构化

确定要实现的目标,将目标细分为几步,每步是定为一个函数。如求平方中,总共有两步,确定要做的是求2的平方并打印出来。第一步是求平方,第二步是打印,因为打印是系统提供的函数,我们只把求的过程独立出来就好。

自上而下执行

函数按自上至下顺序执行(暂不说控制语句),执行完一个之后继续执行下一个。有的时候,main函数中代码量很少,仅仅是调用函数的语句。实际实现功能的代码都在各个被调用的函数当中,就行菜单一样,main函数只是相当于一个目录,真正的实现都在点击事件对应的函数当中。栗子,逻辑都在show函数中执行:

21天学习C语言-第五天

写一个函数

写函数最重要的就是知道想要什么,有了目标,写函数就容易许多。函数由三部分组成,函数头,函数体和函数原型。有些时候,函数原型可以省略。

函数头

函数头 由三部分组成,类型,名称和参数。

  1. 函数类型也就是函数执行后返回值的类型,可以是当前C中的任意类型比如int,char等。
  2. 函数名称是函数的唯一标识,可以随意叫什么,不过最好是能见名知意。
  3. 参数,多数函数都有参数,参数就是要处理的数据,参数需指明类型,多个参数用逗号隔开。

函数体

函数体 是函数逻辑的具体实现部分,用大括号包裹,在函数头之后。一般包括局部变量声明,函数语句,和返回语句。

  1. 局部变量是在函数内部声明的,用于存储当前函数的临时数据。为了可读性,局部变量尽量不要和函数外部的变量重名。
  2. 函数语句是函数逻辑的具体实现部分,函数仍然可以调用其他函数。对于函数的长度,虽然没有限制,不过相对的短一些比较好。如果函数过长,那么函数执行的任务可能需要再次拆分。
  3. 返回值是函数对参数执行逻辑之后得出的最终结果,返回给调用者的值。

函数原型

函数原型的作用是将函数的类型,名称,参数信息告诉编译器,方便编译器对函数调用做检查。实验中发现,编译器会对类型,名称做严格的检查,如果不一致就会报错。参数检查比较复杂,函数原型的参数类型和对应函数的参数类型一定要相同,个数可以相同或者函数原型不写任何参数。但是函数原型如果有参数并且和函数的参数个数不等,则会报错。函数原型可以的参数可以不写名称,或者写其他名称。

调用函数

在需要的位置,写被调用函数的名称并在后面添加括号,括号内为函数需要的参数,如果函数不需要参数,括号置空即可。可以将函数的返回值赋值给变量,也可以作为其他函数的参数。

递归 是调用函数自身,在一些特殊的运算中会经常出现递归,比如求阶乘。递归比较耗资源,非必要的时候不要用。

函数位置

目前阶段比较简单,代码放在一个文件中就好。实际上,函数一般会分开不同的文件放置,在需要调用的地方引入头文件(.h文件)。比如printf函数,我们引入了stdio.h之后就能用,但是printf的函数并未在我们当前的文件中定义。

内联函数(Inline Functions)

对于使用频繁并且体量小的函数,可以在函数前用inline关键字修饰。 内联函数 的作用就是在函数编译的时候将函数的内容整体复制到调用的位置,减少函数调用带来的资源消耗。很明显,内联函数会增加代码的编译时间和编译后程序的体量。inline关键字要放在函数实现部分,放在函数原型前是没有作用的。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

More Effective C++(中文版)

More Effective C++(中文版)

梅耶(Scott Meyers) / 侯捷 / 电子工业出版社 / 2011-1-1 / 59.00元

《More Effective C++:35个改善编程与设计的有效方法(中文版)》是梅耶尔大师Effective三部曲之一。继Effective C++之后,Scott Meyers于1996推出这本《More Effective C++(35个改善编程与设计的有效方法)》“续集”。条款变得比较少,页数倒是多了一些,原因是这次选材比“一集”更高阶,尤其是第5章。Meyers将此章命名为技术(tec......一起来看看 《More Effective C++(中文版)》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具