我知道编译器会自动解引用函数指针。
假设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;
}