a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 92|回复: 1

[程序员] 2012年软件水平考试程序员之程序设计知识要点(23)

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
6.5 返回指针的函数   函数也可以返回指向某种数据对象的指针值。界说(或声名)返回指针值函数的函数头有以下形式:
) f% k7 M$ l% n! I* \- p6 c  类型声名符 * 函数名(形式参数表)
: Q" R- K# S$ n- p5 p8 D* X6 Y! T  例如,函数声名:+ x  y: d6 Q+ Z4 a
  int *f(int,int);6 r0 K% L' g# p. f
  声名函数f()返回指向int型数据的指针,该函数有两个整型形式参数。
- A' Y& r! `$ S  在函数名的两侧分袂为* 运算符和()运算符,而()的优先级高于*,函数名先与()连系。函数名()是函数的声名形式。在函数名之前的* ,暗示此函数返回指针类型的值。' Z9 a9 e: j; i8 R
  【例6.4】 编制在给定的字符串中找特定字符的第一次呈现。若找到,返回指向字符串中该字符的指针;否则,返回NULL值。8 T0 Q( F1 S) v; S2 R1 Y
  设函数为search(),该函数有两个形式参数,指向字符串首字符的指针和待寻找的字符。以下是函数search()的界说:6 X/ i7 _) ?" k0 T8 s
  char *search(char *s,char c)
" Y& X$ K% ^' I* T1 L7 U  { while(*s && *s! = c)4 K( L: M7 n4 J8 ~
  s++;
- b3 E* W% j% D" V% ?  return *s?s:NULL;
" k1 J1 k4 ~9 X  }0 I' m, \& A( s+ `
6.6 函数递归挪用 7 B! }0 N" v4 ^
  一个函数为完成它的复杂工作,可根柢用其它此外函数。例如,从主函数出发,主函数挪用函数A() ,函数A()又挪用函数B(),函数B()又挪用函数C(),等等。这样从主函数出发,形成一个长长的挪用链,就是凡是所说的函数嵌套挪用。函数嵌套挪用时,有一个主要的特征:先被挪用的函数后返回。如这里所举例子,待函数C()完成计较返回后,B()函数继续计较(可能还要挪用其它函数) ,待计较完成,返回到函数A(),函数A()计较完成后,才返回到主函数。
: a+ A8 J4 k6 b  当函数挪用链上的某两个函数为统一个函数时,称这种函数挪用体例为递归挪用。经由过程速归挪用体例完成其功能的函数称为递归函数。良多问题的求解体例具有递归特征,用递归函数描述这种求解算法斗劲精疗鹕砥较n的阶乘(n!)函数就是一个很好的例子。因. S& d/ z& Z# j5 ~7 c- Z
  n! = l*2*3* …*n
& s( D1 C6 u4 g. I: Q
( A' ?9 g- V, g% V& ?) a& Q' x  按其界说用轮回语句可以便利地实现,写成函数见下例6.5。
回复

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:16 | 显示全部楼层

2012年软件水平考试程序员之程序设计知识要点(23)

</p>  【例6.5】用轮回实现阶乘计较的函数。
( g: |6 o- q4 s5 Z; h* p' t  float fac(int n)2 F' C/ A! z6 }+ ~
  {float s;. u3 ?+ Q+ s* ]" I2 k$ B/ X
  int i;
; W, Z3 J) b/ d+ C$ H" l
" L- N4 I' j0 v! G8 L( a0 X* {  for(s=1.of,i=l;i
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 12:03 , Processed in 0.219696 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表