当前位置:嗨网首页>书籍在线阅读

31-使用带返回值的函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.12.2 使用带返回值的函数

声明函数、调用函数、定义函数、使用关键字 return ,都是定义和使用带返回值函数的基本要素。

这里,读者可能有一些问题。例如,既然在使用函数返回值之前要声明函数,那么为什么在使用 scanf() 的返回值之前没有声明 scanf() ?为什么在定义中说明了 power() 的返回类型为 double ,还要单独声明这个函数?

我们先回答第2个问题。编译器在程序中首次遇到 power() 时,需要知道 power() 的返回类型。此时,编译器尚未执行到 power() 的定义,并不知道函数定义中的返回类型是 double 。因此,必须通过前置声明(forward declaration)预先说明函数的返回类型。前置声明告诉编译器, power() 定义在别处,其返回类型为 double 。如果把 power() 函数的定义置于 main() 的文件顶部,就可以省略前置声明,因为编译器在执行到 main() 之前已经知道 power() 的所有信息。但是,这不是C的标准风格。因为 main() 通常只提供整个程序的框架,最好把 main() 放在所有函数定义的前面。另外,通常把函数放在其他文件中,所以前置声明必不可少。

接下来,为什么不用声明 scanf() 函数就可以使用它?其实,你已经声明了。 stdio.h 头文件中包含了 scanf()printf() 和其他I/O函数的原型。 scanf() 函数的原型表明,它返回的类型是 int