电话:0731-83595998
导航

2011年软件水平考试程序员之程序设计知识点21

来源: 2017-10-20 13:56

  6.2 函数调用

  函数被定义以后,凡要实现函数功能的地方,就可简单地通过函数调用来完成。按函数调用在程序中的作用,有两种不同类型的应用:

  (1)函数调用只是利用函数所完成的功能。此时,将函数调用作为一个独立的语句。其调用的一般形式为

  函数名(实际参数表);

  这种应用不要求或程序不利用函数的返回值。如程序中经常调用格式输入函数scanf()和格式输出函数printf()等。

  (2)函数调用是利用函数的返回值。其调用的一般形式为

  函数名(实际参数表)

  这种应用是利用返回值继续进行表达式的计算,或输出函数返回值等。

  函数调用时提供的实际参数按它们出现的顺序与函数定义中的形式参数-一对应,并要求实际参数类型与其对应的形式参数类型相一致。一般情况下,函数调用应为函数定义中的每个形式参数提供实际参数,当有多个实际参数时,实际参数之间用逗号分隔。

  函数调用的执行过程描述如下:

  (1)为函数的形式参数分配内存空间;

  (2)计算实际参数表达式的值,并将实际参数表达式的值赋给对应的形式参数;

  (3)为函数的局部变量分配内存空间;

  (4)执行函数体内的语句序列;

  (5)函数体执行完成,或执行了函数体内的return语句(若return语句带表达式,则计算出该表达式的值,并以此值作为函数的返回值)后,释放为这次函数调用分配的全部内存空间;

  (6)将函数值(如果有)返回到函数调用处继续执行。

  下面以简单的程序例子说明函数调用的执行过程。

  【例6.l】函数调用时,由实际参数向函数形式参数传递值的示意程序。

  # include

  double x,y,d;

  double min(double a,double b)

  {double temp;

  temp=a> b? b :a;

  return temp;

  }

  void main()

  { printf("Enter x, y.n");

  scanf("%lf%lf",&x,&y);

  d=min(x,y);

  printf("MIN(%.3f,%.3f=%.3fn", x, y,d)

  }

  以上示意程序的大致执行过程如下:

  首先执行主函数的第一个语句,调用格式输出函数输出提示信息。接着调用格式输入函数,等待用户输入数据。用户看到程序输出的提示信息,输入数据,输入的数据被格式输入函数所接受,并将输入数据译成内部形式后,存入变量X和y。接着执行赋值语句,求右瑞表达式的值。该表达式以x和y的值为实际参数,调用函数main()。对函数min()的调用发生时,系统先保留好控制的返回点。在执行被调用函数min()之前,先为函数的形式参数a和b分配存储单元,并以它们对应的实际参数表达式的植给它们赋初值。接着为函数内部的变量(称为局部变量)分配存储单元。之后才开始执行被调用函数体中的语句。执行完函数体的语句,或执行了return语句,函数准备返回。在返回之前先将形式参数和局部变量所占用的存储单元全部释放。函数返回时,将函数的返回值带回调用处,从原先保留的控制返回点,继续执行,将函数调用的返回值存于变量d,输出结果,结束程序。综上所述,函数调用时,系统要做许多辅助工作,函数调用时发生的数据传递最主要的是实际参数向形式参数传递数据和函数的返回值传递给调用处。为正确编写函数,实现函数调用所希望的要求,需正确了解以下几项内容:

  (1)当函数执行return语句或执行完函数体的语句序列后,函数的这次调用就执行结束,随之将控制返回到函数调用处继续执行。

  (2)函数的返回值是通过执行return语句时,计算return之后的表达式值而获得的。如果函数不提供返回值,则return语句不应包含表达式。

  (3)如果函数有返回值,则应有确定的类型,并在函数定义时指明。同时,return语句的表达式类型应与函数定义中指明的返回值类型相一致。

  (4)为了明确指明函数不提供返回值,建议在函数定义时,在函数名之前写上void。并在这样的函数体内,所有的return语句都不应该带表达式。

  6.3 函数说明

  C函数都是外部的,一般来说,任一函数都能被其它函数调用。而一个函数要调用另一个函数,应知道被调用函数的一些有关如何正确调用的信息。调用函数与被调用函数之间在程序正文中可能会存在以下几种情况。

  (1)调用同一程序文件中前面已定义的函数。

  (2)调用处于同一程序文件后面定义的函数。

  (3)调用别的程序文件中定义的函数。

  对于第一种情况,因在函数调用处,被调用函数的详细信息已被编译程序所接受,在函数定义之后调用前面已定义的函数,能方便地检查调用的正确性。对于后两种情况,这时因被调用函数的信息还未被编译程序所接受,不能检查函数调用的正确性,所以在调用之前需对被调用函数有关调用的一些信息作出说明。如函数的返回值类型、函数名和函数有关形式参数的个数及其类型等。这样的说明称作函数说明。函数说明的一般形式为

  存储类型说明符 数据类型说明符 函数名(形式参数说明表);

  其中存储类型说明符可以省缺,或写成extern。形式参数说明表可以为空,也可以顺序列出各形式参数的类型,同样也可以顺序列出各形式参数的类型和形式参数的名。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端