今天是20天学习打卡的最后一天,为了提高学习速度,之后的学习应该不会再写博客了,感谢大家的陪伴。希望以后还会有写博客的机会吧
今天的学习内容是C++的函数
【这里只是了解函数的一些基本特征】
C++函数分为两种:有返回值的和没有返回值的
例如:C++库函数中有一个sqrt()函数,他返回平方根,如果我们要计算4的平方根,就可以用以下语句:
x=sqrt(4);
C++为每个函数提供了原型
函数原型之于函数就像变量声明之于变量——指出涉及的类型
例如:sqrt()函数的原型是:double sqrt(double);
第一个double【后面讲】意味着sqrt()将返回一个double值,括号中的double意味着sqrt()需要一个double参数。
原型结尾的分号表明他是一条语句,这使得它是一个原型,而不是函数头
例程:
#include
#include
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;
}
有些函数需要多项信息,这些函数使用多个参数,参数间用逗号隔开。
例如:pow()函数接收两个参数,返回值为以第一个参数为底,第二个参数为指数的幂;
原型:double pow(double,double)
可以这样使用:answer=pow(5.0,8.0)
计算5的8次方
有些函数不接受任何参数
例如:rand()函数不接受任何参数,并返回一个随机整数
原型:int rand(void);
void明确指出该函数不接受任何参数。如果省略void,让括号为空,则C++将其解释为一个不接受任何参数的隐式声明
注意:C++函数调用必须要括号,即使没有参数
#include
void simon(int n); //simon的函数原型
int main()
{
using namespace std;
simon(3);
cout << "Pick an integer: ";
int count;
cin >> count;
simon(count);
cout << "Done!" <
返回值类型 函数名(参数列表)
{
函数体
}
注意:和C一样C++不允许将函数定义嵌套在另一个函数定义中。每个函数定义都是独立的
上述程序中,simon()的函数头为:void simon(int n);
开头的void表明simon()没有返回值,因此不可以这样调用:simple = simon(3);
括号中的int表明应提供一个int参数
如:simon(3);
表示将3赋给了simon()函数头中定义的变量
函数头 int main()
开头的int表示要返回一个整数值,对于有返回值的函数,应使用return关键字来提供返回值,并结束函数,这就是为什么要在main()函数结尾使用 return 0;
的原因
那么,这个返回值返回到哪里了呢?
答案是,main()的返回值并不是返回给程序的其他部分,而是返回给操作系统
在英国,很多都以英石(stone)为质量单位,不像美国以磅或者公斤为单位,一英石等于14磅,下面的程序可以实现这个转换
#include
int stonetolb(int);//函数原型
int main()
{
using namespace std;
int stone;
cout << "Enter the weight in stone: ";
cin >> stone;
int pounds = stonetolb(stone);
cout << stone << " stone = ";
cout << pounds << " pounds." <
在main()中,程序使用cin给整型变量stone提供一个值。这个值被作为参数传递给stonetolb()函数,在函数中,这个值被赋给sts。然后,stonetolb()用关键字return将14*sts返回给了main()。
上面的两个例子表明
函数原型描述了函数接口,即函数如何与程序的其他部分交互。
参数列表指出了何种信息将被传递给参数。
函数类型指出了返回值的类型。
函数stonetolb()短小简单,但包含了全部的函数特性:
在③中的代码中,两个函数都包含了 using namespace std;
这是因为每个函数都使用了cout,因此需要能够访问位于名称空间std中的cout定义。
我们也可以采用另一种方法让两个函数都能访问名称空间std,即将编译指令放在函数的外面,且位于两个函数的前面
#include
using namespace std;
void simon(int n); //simon的函数原型
int main()
{
using namespace std;
simon(3);
cout << "Pick an integer: ";
int count;
cin >> count;
simon(count);
cout << "Done!" <
当前通行的理念是,只让需要访问名称空间std的函数访问它是更好的选择。
例如在④程序中,只有main()使用cout,因此没必要让函数stonetolb()能够访问名称空间std。