函数名后面是一个左括号,后跟零个或多个参数。函数参数用于向函数传递执行其任务时可能需要的数据。函数参数之间用逗号隔开。你经常听到程序员提到函数参数作为参数列表,参数列表以右括号结束。如前所述,你可以将函数想象为一个黑匣子,有前门、后门,没有窗户(黑匣子里发生的事情留在黑匣子里……不要偷看它的内部)。程序控制携带一个背包进入前门,背包中有使用的数据,函数需要执行其任务。背包的内容是函数参数。一些函数,如在每个程序中看到的setup()和loop()函数,不需要外部调用帮助做他们的事情。在这些情况下,函数有一个无效的参数列表,背包是空的。实际上,你可以将单词void作为setup()和loop()的参数列表,重新编译编程,编译器对这些更改非常满意。
在函数执行完成后,你带着背包从后门出来。背包里的内容是由函数生成的数据。例如,如果当函数程序执行退出后门时,背包包含一个浮点数,即函数类型说明符必须是float或double,这取决于编写该函数的程序员对函数数据类型的声明。
例如:
函数NaiIsNeeded()有两个参数:nailsPerFoot和numberOfFeet。在本例中,背包中塞满了这两个int数据类型的值,并将数据发送到NaiIsNeeded()中,一旦进入函数的前门,程序代码将删除两个int,并执行某种形式的计算,将所需的钉子数作为整数放入背包中,并将生成的数据发送回到调用处。背包的内容将转储到变量buyNails中。换言之,背包的内容将成为buyNails的右值。函数参数的声明在实际调用传递数据时编译器是可以检查出传递给函数的正确数据类型的。例如,如果你试图调用标准库名为bit()的函数:
bit(2.33);(www.xing528.com)
然后编译器会报错,因为它知道函数的参数不能是浮点数。捕获发送到函数的数据类型与函数期望的数据类型之间的这种不匹配是类型检查的一种形式。编译器还对函数返回的值执行类型检查。你可以写:
int val=pow(10000,2);//WRONG!
编译器也会报错。这个代码在两个层面上是错误的。首先,pow()返回一个浮点数,代码试图将一个4字节的浮点数转换成一个整数。第二个是由pow()计算的数值将溢出int可以容纳的最大值。如果函数返回的是假值,请确保将数据传递给与其参数列表一致的函数。另外,请确保返回值与用于保存返回值的变量类型一致。
在跟踪这种性质的bug时,你可以从IDE获得更多帮助。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。