如何在函数指针中使用函数的地址?

时间:2014-01-15 05:54:37

标签: c pointers

我的以下代码工作正常。但我毫不怀疑,请参阅//Comment1//Comment2

#include<stdio.h>
#include<string.h>

struct PTR
{
    int (*funptr)(int);
};

int fun1(int)
{
    printf("Fun1\n");
    return 0;
}

int fun2(int)
{
    printf("Fun2\n");
    return 0;
}

int main()
{
    PTR p;
    p.funptr = &fun1; //Comment1
    p.funptr(5);

    printf("\n");

    p.funptr = fun2; //Comment2
    p.funptr(5);


  return 0;

}

输出:Fun1 FUN2

输出没问题。

评论1'&amp;'使用了opertor,所以我们正在探讨如何获取地址,在评论2中,我们没有使用'&amp;',那么哪一个是正确的方法?

2 个答案:

答案 0 :(得分:1)

下面,

p.funptr = &fun1我们提供了该函数的地址。所以'&amp;'这里是可选的,因为p.funptr = fun1也分配了函数的地址。

答案 1 :(得分:1)

'&安培;'在获取函数地址时是可选的。