为什么将函数指针作为函数调用?

时间:2019-04-23 14:40:46

标签: c function function-pointers

我已阅读How does dereferencing of a function pointer happen?。然后,如果我一切都很好理解,那是否意味着有关函数,是否直接使用函数名称f相对于其地址&f相对于其* f无关紧要? 这样,n倍的取舍就无关紧要(即*** f) 但是这次,取地址的地址(即&& f)不是函数本身,而是函数存储在哪里的内存地址?

#include <stdio.h>

void (*f1bis)(int);
void f1(int);
void f1(int a) { 
    printf("F1 Value of a is %d\n", a);
    return ;
};

int main(void) {

    f1bis = &f1;

    f1bis(14);// ? why this works
    (*f1bis)(14);
    (**f1bis)(14);
    //(&f1bis)(14);// doesn't work why
    //(&&f1bis)(14);// doesn't work why 

    f1(13);
    (*f1)(13);
    (**f1)(13);
    (&f1)(13);// ? why this works
    //(&&f1)(13);// ? this doesn't work (I guess it's equivalent to (&f1bis)(14) example )

    return 0;
}

我是对的还是我错过了有关解释的内容?

谢谢。

0 个答案:

没有答案