学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > c++ >

第四节 函数I(Functions I)(5)

设置字体:
----------------------------------

它的形式是:
type name ( argument_type1, argument_type2, ...);
它与一个函数的头定义(header definition)一样,除了:
  • 它不包括函数的内容, 也就是它不包括函数后面花括号{}内的所有语句。
  • 它以一个分号semicolon sign (;) 结束。
  • 在参数列举中只需要写出各个参数的数据类型就够了,至于每个参数的名字可以写,也可以不写,但是我们建议写上。
例如:
// 声明函数原型
#include <iostream.h>

void odd (int a);
void even (int a);

int main () {
int i;
do {
cout << "Type a number: (0 to exit)";
cin >> i;
odd (i);
} while (i!=0);
return 0;
}

void odd (int a) {
if ((a%2)!=0) cout << "Number is odd.\n";
else even (a);
}

void even (int a) {
if ((a%2)==0) cout << "Number is even.\n";
else odd (a);
}
Type a number (0 to exit): 9
Number is odd.
Type a number (0 to exit): 6
Number is even.
Type a number (0 to exit): 1030
Number is even.
Type a number (0 to exit): 0
Number is even.
这个例子的确不是很有效率,我相信现在你已经可以只用一半行数的代码来完成同样的功能。但这个例子显示了函数原型(prototyping functions)是怎样工作的。并且在这个具体的例子中,两个函数中至少有一个是必须定义原型的。
这里我们首先看到的是函数odd 和even的原型:
void odd (int a);
void even (int a);
这样使得这两个函数可以在它们被完整定义之前就被使用,例如在main中被调用,这样main就可以被放在逻辑上更合理的位置:即程序代码的开头部分。
尽管如此,这个程序需要至少一个函数原型定义的特殊原因是因为在odd 函数里需要调用even 函数,而在even 函数里也同样需要调用odd函数。如果两个函数任何一个都没被提前定义原型的话,就会出现编译错误,因为或者odd 在even 函数中是不可见的(因为它还没有被定义),或者even 函数在odd函数中是不可见的。
很多程序员建议给所有的函数定义原型。这也是我的建议,特别是在有很多函数或函数很长的情况下。把所有函数的原型定义放在一个地方,可以使我们在决定怎样调用这些函数的时候轻松一些,同时也有助于生成头文件。
 
----------------------------------
课程列表
重点难点
赞助链接