gpt4 book ai didi

c - 关于c中函数指针的2个问题

转载 作者:行者123 更新时间:2023-12-04 12:37:35 25 4
gpt4 key购买 nike

我有两个问题

1.我看到了

int (*Ptr)(int,int);
Ptr=someOtherFuncion;

不应该是这样吗?

Ptr=&someOtherFuncion;

2.我了解到函数指针用于回调像那样

    someOtherFunction(functionPointer)

如果我放置一个不是指针的常规函数​​有什么区别?

最佳答案

函数的名称几乎立即衰减为指向该函数的指针,因此 someOtherFunction 衰减为 &someOtherFunction 明确提供给您的同一指针。事实上,寻址操作符 (&) 的操作数是少数几个没有发生衰减的地方之一。

这会产生有趣的结果:即使您取消引用函数指针,它也会立即再次衰减。所以以下都是等价的:

someOtherFunction(1, 2);
(*someOtherFunction)(1, 2);
(**someOtherFunction)(1, 2);
(***someOtherFunction)(1, 2);

因此,如果您觉得在没有显式地址的情况下分配给函数指针不合适,请务必将 & 放在那里,但您不必这样做。

要解决问题的第二部分:函数总是通过函数指针调用,但是由于上述瞬时衰减,可以像函数一样调用普通函数指针。

关于c - 关于c中函数指针的2个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com