C++学习(三)入门篇——函数

时间:2021-11-18 23:20:54

C++函数分两种:有返回值的和没返回值的

1.有返回值的函数

C++学习(三)入门篇——函数

调用函数流程

如图,sqrt(6.25)为函数调用,被调用的函数叫做被调用函数,包含函数调用的函数叫做调用函数。

C++学习(三)入门篇——函数

参数是发送给函数的信息,返回值是从函数中发送回去的值。

在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型。如果缺少,编译器将不知道如何解释返回值。

C++程序应为程序中使用的每个函数提供原型

sqrt()的函数原型:

double sqrt(double);

如果省略分号,那么这行代码将被解释为一个函数头,并要求接着提供定义该函数的函数体。

提供函数原型有两种方法:

1.在源代码文件中输入函数原型

2.包含文件cmath,其中定义了原型(更好)

不要混淆函数原型和函数定义。原型只描述函数接口(描述发送给函数的信息和返回的信息)。头文件中包含了原型,库文件中包含了函数的编译代码。

程序清单2.4 sqrt.cpp
//sqrt.cpp - - using the sqrt() function #include<iostream>
#include<cmath> int main()
{
using namespace std; double area;
cout << "Enter the floor area,in square feet,of your home:";
cin >> area;
cin.get();
double side;
side = sqrt(area);
cout << "That's the equivalent of a square " << side
<< " feet to the side." << endl;
cout << "How fascinating!" << endl;
cin.get();
return 0;
}

C++库函数存储在库文件中,如果运行程序时,得到消息指出_sqrt是一个没有定义的外部函数,很有可能是编译器不能自动搜索数学库(编译器倾向于给函数名添加下划线前缀——提示它们对程序具有最后的发言权)。

C++允许在程序的任何地方声明新变量,也可以在创建变量时对它赋值

double side=sqrt(area)   叫做初始化

cin知道如何将输入流中的信息转化为double型,cout知道如何将double类型插入到输出流中,这些对象都很智能化。

2.函数变体

有些函数需要多项信息

如:pow()

double pow(double,double);第一个参数为底,第二个参数为指数的幂

answer=pow(5.0,8.0)

另外一些函数不接受任何参数

int rand(void);该函数不接受任何参数,并返回一个随机整数

省略void,括号为空,则是一个不接受任何参数的隐式声明

如:myGuess=rand();

C++中,函数调用中必须包括括号,即使没有参数

还有些函数不需要返回值,如显示一个时刻表,在屏幕中显示就好

void bucks(double);

由于不返回值,不能放在赋值语句或其他表达式中,而是一条纯粹的函数调用语句

bucks(1234.56);

在有些语言中,有返回值的叫函数,没有的叫过程

标准C库提供了140多个预定义的函数,如果其中的函数满足要求则调用它们。

不满足,就自己写。

对于库函数,通常把原型放在main()定义之前,并提供新函数的源代码,放在main()后面。