正如你将看到的,你可以通过Arduino C中的指针调用函数,当基于特定值执行一组已知任务时,这非常有用。但首先,让我们看看如何使用指向函数的指针。清单9-4显示了使用函数指针的代码。
代码清单9-4.Using a Pointer to Function
清单9-4的某些部分一开始看起来有点奇怪,但它们确实有意义。第一个奇怪的说法是:
int(*funcPtr)(int n);//This defines a pointer to function
在本章后续内容“左右规则”的部分中,你将学习破译复杂数据定义的快捷方式。但现在,这一行很简单,funcPtr是一个指向函数的指针,该函数只有一个int参数(n)并返回一个int数据类型。声明将更改为:
int(*funcPtr)();//This defines a pointer to function with no arguments
void(*funcPtr)(float arg1,float arg2);//This defines a pointer to void function(www.xing528.com)
如你所见,函数指针的类型说明符由函数的返回值决定。指针的名称funcPtr前面有间接运算符,因此编译器知道正在定义指针。周围的括号将指针标记为指向函数的指针。第二组括号是指向函数的参数列表。
你可能已经想到了相关语句:
funcPtr=DisplayValue;//This copies the lvalue of DisplayValue
此语句将函数的左值复制到funcPtr中。正如变量在内存中有一个地址(即它的左值),函数也是如此。
下一项声明:
number=(*funcPtr)(number)
使用funcPtr调用DisplayValue()函数,将number的值传递给该函数。函数本身只显示传递给它的当前值。但是,函数会将数字平方,并将其作为函数调用的返回值发送到回调处,然后显示返回值,表明该数字实际上是该函数的平方。图9-5显示了程序的运行结果。如图所示,数字在计算过程中是函数调用的平方,并将该值返回给调处。
图9-5 程序运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。