在C中调用函数指针而不使用*

时间:2017-04-01 23:20:45

标签: c function-pointers

我需要理解为什么我们可以在没有*的情况下调用C中的函数指针,就像我们调用一个常规函数一样(这可能会使读者混淆程序,因为他可能会搜索具有此名称的函数,而不会找到它)

#include <stdio.h>
int sum(int , int);

int main(void){

    int a, b, total;
    int (*ptr_sum)(int x, int y)=sum;

    printf("Enter a:");
    scanf("%d", &a);

    printf("Enter b:");
    scanf("%d", &b);

    total=(*ptr_sum)(a, b);  //************line 1
    total=ptr_sum(a, b);     //************line 2
    printf("The total = %d\n", total);

    return(0);
}

int sum(int m, int n) {
    return m+n;
}

在第1行,我们使用*运算符调用了函数指针。在第2行,我们再次调用它但没有*,就像它是一个常规函数一样。

为什么呢?为什么两者都一样?

0 个答案:

没有答案