函数原型究竟怎样理解?

我在看c++primerplus看到第二章函数的时候,书上说在使用函数之前必须提供函数原型,然后比如sqrt()函数在c++库中定义成一个(可能)带小数部分的数字(如6.... 我在看c++ primer plus看到第二章函数的时候,书上说在使用函数之前必须提供函数原型,然后比如sqrt()函数在c++库中定义成一个(可能)带小数部分的数字(如6.25)作为参数,并返回一个相同类型的数字,c++称这种数字为double。sqrt()的函数原型像这样:double sqrt(double)或这样double x; x=sqrt(6.25);,
??我想知道这里说的这种数字,也就是说的double,是因为小数部分呢?还是因为返回一个相同类型的数字?才叫double。
然后下面接着说,在程序中使用sqrt()时,也必须提供函数原型,可以用两种方法实现,1:在源代码文件中输入函数原型。2:包含头文件cmach,其中定义了原型。
???为什么这里用“也必须”提供函数原型?然后再一个实例中这样写 头文件包含了#include<cmath>,这里已经按上面的第2种方法包含在头文件定义了原型了,为什么在函数体中还要使用double side; side=sqrt(6.25)呢?
第二个问题问为什么书上说“也必须”提供函数原型,函数都不是在程序中使用的吗?为什么下面说在程序中使用sqrt()函数是,也必须提供函数原型呢?难道不实用函数是也必须提供原型么?

下面应该怎样理解呢?
这是个实例因为太多,被我删了一点
#include<cmath> //书中说有两种方法实现提供sqrt()函数原型,1:在代码文件中输入原型。 2:包含头文件cmach。既然已经有语句提供函数原型了,为什么还要有这个头文件?//
int main()
{
using namespace std;
cout<<"Enter the floor area,in square feet,of your home;"
double side;//既然头文件已经包含了函数原型了,为何还要声明 (按书上说这样的格式就表示函数原型)是因为函数头使用了整数,函数体用了sqrt()函数,值包含小数吗?//
side=sqrt(area);
cout<<side<<"=";
return 0;
}
展开
 我来答
wxw156
推荐于2017-10-15 · TA获得超过2813个赞
知道小有建树答主
回答量:1165
采纳率:100%
帮助的人:286万
展开全部

前面这个“原型”的意思是:原本的数据类型。

这里,先要给你解释一些基本概念:

  1. 变量和数据类型。

变量就是储物柜。数据类型,就是你将要放进这个储物柜的物品种类。

存放不同物品的储物柜,大小相差很大。如果你开一个车库来存放一只苹果,那就大大浪费了空间。反之就放不进去,造成数据丢失。所以在c++中,每开一个储物柜,就要预先说明它是用来存什么的。如果是存单个水果的,那就只开一点点空间。如果是要存飞机的,那就要弄个大机库。

例子:double x; 开一个用来存放double类物品的储物柜,并且命名为x。

而计算机编程语言中,基本的数据类型无非就那么几个:整数int / integer / long; 实数double / float; 布尔型/逻辑型 bool / boolean; 字符型char; 字符串string / cstring;


其中,每一个类型都有其固定的最大长度,就是c++为这种储物柜所设计的空间大小。

同一类的数据,如果超出了允许的长度,那要么就拆成几个,要么就用长度更大的类型。

比如说,int表示一个整数,而long也是。区别在于long用更大的储存空间,可以表示更大的整数。

double在英语中是双倍的意思。double就比float用了双倍的储存空间来储存实数(整数+小数)。


2. 函数

关于函数,以后有进一步认识之后会有不同的定义。这里对于现在简单的函数给你一个直观的认识。

一个函数,就像是一部机器、一条生产流水线。加入一种或几种原料,产出一个产品。从原料到产品的加工步骤和方式定义在函数内部,调用的时候无须理会。就比如榨汁机,输入单个水果类型的物品作为原料,产出汁水类型的果汁。输入苹果,产出苹果汁。输入芒果,产出芒果汁。

sqrt()也一样。其实sqrt()只是一个给人看的简称,c++里面、cmath里面根本不存在sqrt()这个函数。真正完整的函数就是double sqrt(double)。第一个double,表示这部机器的产物是一个double种类的物品。括号中的double,表示这部机器一次只需要一个double类型的物品作为原料。


后面的那个“原型”是什么意思呢?就是指sqrt()这部机器内部的运作方式、加工工序。后面那句话的意思是,你想要在你的程序中,使用sqrt()这部机器。那么你要么就要先在你的程序中造出来:(在源代码文件中输入函数原型)。如果你不会造,那也没关系,把人家造好的机器拿过来用也行,但你要先告诉我有这部机器的人叫什么名字(包含头文件cmach,其中定义了原型。cmach就是拥有sqrt()这部机器的人)

追问
写的很好 举例也通俗易懂,但是还有个问题能帮忙解答一下吗,在补充问题里的那个示例。
追答
头文件cmach里,包含了各种机器(函数),其中就有double sqrt(double).
所谓“在源代码文件中输入函数原型”,指的不是double x; x=sqrt(6.25);而是:
double sqrt(double)
{
.....
return ...;

}
cmach里面包含了这一段,所以你不需要再在程序中写的是这一段。

而double x; x=sqrt(6.25);的意思是:准备一个double类型的储物柜,命名为x。然后以double类型的6.25为原料,通过sqrt()机器加工,并把所获得的double类型的产出品放入储物柜x。
简单地说,这一句是调用,调用sqrt()函数。
百度网友4e73a73
2013-07-02
知道答主
回答量:12
采纳率:0%
帮助的人:1.4万
展开全部
这种数是带小数部分的数字。
原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型以及参数的类型和数量告诉编译器,因此编译器知道应该检索多少个字节以及如何解释它们。如果没有这些信息编译器将只能进行猜测,而编译器是不会这样做的。
函数原型可以帮助编译器完成许多工作,对程序员可以极大的降低程序出错的几率,可确保以下几点:
编译器正确处理函数的返回值;
变意思检查使用的参数数目、参数类型是否正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式