往期传送门:
《C++ Primer Plus 第六版 中文版》的研读与学习(七)
《C++ Primer Plus 第六版 中文版》的研读与学习(六)
《C++ Primer Plus 第六版 中文版》的研读与学习(五)
《C++ Primer Plus 第六版 中文版》的研读与学习(四)
《C++ Primer Plus 第六版 中文版》的研读与学习(三)
《C++ Primer Plus 第六版 中文版》的研读与学习(二)
《C++ Primer Plus 第六版 中文版》的研读与学习(一)
本期我们将谈一谈有关C++函数的知识。先来看一段代码:
#include <iostream>
#include <cmath> // or math.h
int main()
{
using namespace std;
double area;
cout << "Enter the floor area, in square feet, of your home: ";
cin >> area;
double side;
side = sqrt(area);
cout << "That's the equivalent of a square " << side << " feet to the side." << endl;
cout << "How fascinating!" << endl;
return 0;
}
在这个程序中,我们用到了<cmath>
库中的sqrt()
函数,用于平方根的计算,是一个有返回值的函数。即:
x=sqrt(18.49); //返回18.49的平方根4.3赋给x
圆括号中的值称为函数的参数。根据C++中“流”的观点,参数就是流入函数的信息,返回值就是流出函数的信息。使用函数之前,必须首先知道函数参数和返回值的类型,即函数原型(function prototype)。sqrt()
函数的原型如下:
double sqrt(double); //函数参数为双精度型、返回值为双精度型
其中的分号不可省略,否则编译器会将其视为函数头,紧接着就需要提供函数的函数体。
在源程序中,如果函数的定义在函数调用之前,则函数原型可以视为在函数定义中已经给出;如果函数的定义在函数调用之后,则必须提前声明函数原型。方法如下:
- 在源程序中直接输入
- 包含定义了函数原型的头文件
C++中的<cmath>
是数学库,sqrt()
函数就在其中定义。在CFree编译器中,将光标放在函数名上,按F1(Fn+F1)即可查询到对应函数所在的库。在Linux中,需要输入命令行:g++ sqrt.C -lm
;在UNIX中,则需要输入命令行:CC sqrt.C -lm
。
由于sqrt()
函数的参数为double类型,因此需要提前将变量声明为double类型。即:
double area;
C++允许在任何位置定义新变量,也允许定义变量的同时为其赋值,即:
double side;
side = sqrt(area);
可以等效为:
double side = sqrt(area);
该过程即成为初始化(initialization).
好了,本期我们就先讲到这里,欲知后事如何,请看下期。