编程高手之路语言十函数的定义和调用_第1页
编程高手之路语言十函数的定义和调用_第2页
编程高手之路语言十函数的定义和调用_第3页
编程高手之路语言十函数的定义和调用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编程高手C 语言(十)函数的定义和调用本节介绍C 程序的基本单元-函数。函数中包含了程序的可执行代码。每个 C 程序和出口都位于函数 main()之中。main()函数可以调用其他函数,这些函数执行完的毕后程序的控制又返回到 main()函数中,main()函数不能被别的函数所调用。通常把这些被调用的函数称为下层(lower-level)函数。函数调用发生时,立即执行被调用的函数,而调用者则进入等待状态,直到被调用函数执行完毕。函数可以有参数和返回值。程序员一般把函数当作“黑箱”处理,并不关心它己开发函数库。的实现细节。当然程序员也可以自说明一点,函数这一节很重要,可以说一个程序的优劣在函数上

2、。如果函数使用的恰当,可以让程序看起来有条理,容易看懂。如果函数使用的乱七八糟,或者是没有使用函数,程序就会显得很乱,不仅让别人无法查看,就连自己也容易晕头转向。可以这样说,如果超过 100 行的程序中没有使用函数,那么这个程序一定很罗嗦(有些绝对,但也是事实)。一、函数的定义一个函数包括函数头和语句体两部分。函数头由下列三不分组成:函数返回值类型函数名参数表一个完整的函数应该是这样的:函数返回值类型 函数名(参数表)语句体;函数返回值类型可以是前面说到的某个数据类型、或者是某个数据类型的指针、指向结构的指针、指向数组的指针。指针概念到以后再介绍。函数名在程序中必须是唯一的,它也遵循标识符命名

3、规则。参数表可以没有也可以有多个,在函数调用的时候,实际参数将被拷贝到这些变量中。语句体包括局部变量的和可执行代码。面其实已经接触过函数了,如 abs(),sqrt(),们只要会使用它即可。这一节主要讲解无参数无返回值的函数调用。并不知道它的是什么,我二、函数的和调用为了调用一个函数,必须事先该函数的返回值类型和参数类型,这和使用变量的道理是一样的(有一种可以例外,就是函数的定义在调用之前,下面再讲述)。看一个简单的例子:void a(); /*函数*/main()a(); /*函数调用*/void a() /*函数定义*/num; scanf(%d,&num); prf(%dn,num);在

4、 main()的前面了一个函数,函数类型是 void 型,函数名为 a,无参数。然后在main()函数里面调用这个函数,该函数的作用很简单,就是输入一个整数然后再显示它。在调用函数之前main()num; scanf(%d,&num); prf(%dn,num);了该函数其实它和下面这个程序的功能是一样的:可以看出,实际上就是把 a()函数里面的所有内容直接搬到 main()函数里面(注意,这句。)话不是前面已经说了,当定义在调用之前时,可以不个也是等价的:void a()num; scanf(%d,&num); prf(%dn,num);函数。所以上面的程序和下面这main() a();因为

5、定义在调用之前,所以可以不函数,这是因为编译器在编译的时候,已经发现a 是一个函数名,是无返回值类型无参数的函数了。那么很多人也许就会想,那何必还要这一步呢?只要把所有的函数的定义都放面不就可以了吗?这种想法是不可取的,一个好的程序员总是在程序的开头声明所有用到的函数和变量,这是为了以后好检查。前面说了,在调用之前,必须先函数,所以下面的做法也是正确的(但在这里我个人并不提倡)。main()void a();a();void a()num; scanf(%d,&num); prf(%dn,num);一般来说,比较好的程序书写顺序是,先义的函数。既然 main()函数可以调用别的函数,那么呢?是可以的。看下面的例子:函数,然后写主函数,然后再写那些自定自己定义的函数能不能再调用其他函数void a();void b();main() a();void a() b();void b()num; scanf(%d,&num); prf(%dn,num);main()函数先调用a()函数,而a()函数又调用b()函数。在C 语言里,对调用函数的层数没有严格的限制,可以往下调用 100 层、1000 层,但是在这里并不提倡调用的层数太多(除非是递归),因为层数太多,对以后的检查有一些干扰,函数调过来调过去,容易让自己都晕头转向。某些人可能就不明白了,看上面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论