使用函数指针

时间:2017-10-30 12:20:55

标签: c function pointers

我知道编译器会自动解引用函数指针。

假设int (*function) (int arg);

然后(*function)与函数相同。但为什么&function也与功能相同?我不明白为什么以下代码有效。

传递函数指针的正确方法是什么? 当我们声明一个函数时,例如int f(int a),它是否意味着f自动是存储函数的地址?

提前致谢。

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int cmp (const void *a, const void *b) {
    return *(int*)a-*(int*)b;
}

int main (int argc, char *argv[]) {
    int i; 
    int A[5] = {0,2,3,1,4};
    qsort(A, 5, sizeof(*A), cmp);
    for (i = 0; i < 5; i++){
        printf("%d,",A[i]);
    }
    printf("\n");

    qsort(A, 5, sizeof(*A), &cmp);
    for (i = 0; i < 5; i++){
        printf("%d,",A[i]);
    }
    printf("\n");

    qsort(A, 5, sizeof(*A), *cmp);
    for (i = 0; i < 5; i++){
        printf("%d,",A[i]);
    }
    printf("\n");

    return 0;
}

0 个答案:

没有答案