深入理解函数指针
时间:2022-04-23 13:39
函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具。本文将从
这是一个简单的例子。运行这段代码,你会看到每个函数指针都会执行,只是会收到一些关于字符转换的警告。但是,这些函数指针都能正常工作。
在第15行,
在第16行,解引用符作用于
在第17行,取地址符作用于
18到19行,
显然,这段代码不是优秀的实例代码。我们从中收获到了如下知识:}
add
作为函数名,返回这个函数的地址,它被隐式的转换为一个函数指针。我之前提到过,在函数指针被要求当作输入的地方,就能够使用函数名。add
之前,即*add
,返回在这个地址的函数。之后跟函数名一样,它被隐式的转换为一个函数指针。add
之前,即&add
,返回这个函数的地址,之后又得到一个函数指针。add
不断地解引用自身,不断返回函数名,并被转换为函数指针。到最后,它们的结果都和函数名没有区别。
*
和取地址符&
用在函数名之前基本上都是多余的。