为什么函数指针定义与任意数量的符号‘&’或星号‘*’一起工作?

为什么函数指针定义与任意数量的符号‘&’或星号‘*’一起工作?

为什么要做下面的工作?

void foo() {
    cout << "Foo to you too!\n";};int main() {
    void (*p1_foo)() = foo;
    void (*p2_foo)() = *foo;
    void (*p3_foo)() = &foo;
    void (*p4_foo)() = *&foo;
    void (*p5_foo)() = &*foo;
    void (*p6_foo)() = **foo;
    void (*p7_foo)() = **********************foo;

    (*p1_foo)();
    (*p2_foo)();
    (*p3_foo)();
    (*p4_foo)();
    (*p5_foo)();
    (*p6_foo)();
    (*p7_foo)();}


缥缈止盈
浏览 391回答 2
2回答

白猪掌柜的

我认为,记住C只是底层机器的抽象,这也是很有帮助的,这是这个抽象正在泄漏的地方之一。从计算机的角度来看,函数只是一个内存地址,如果执行,它会执行其他指令。因此,C中的函数本身被建模为一个地址,这可能导致一个函数与它所指向的地址“相同”的设计。
打开App,查看更多内容
随时随地看视频慕课网APP