在使用函数指针时,需要确保函数指针的类型与指向的函数的类型相兼容,包括参数和返回值类型。例如:
#include
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
int main() {
void (*func)(int, int) = add; // 函数指针类型与函数类型相兼容
func(1, 2);
int (*func2)(int, int) = add; // 函数指针类型与函数类型不兼容,编译错误
return 0;
}
在上述示例中,我们定义了一个函数指针func
,并将其指向一个函数add
。由于函数指针类型和函数类型的参数和返回值类型相同,因此它们是兼容的。当我们调用函数指针时,实际上是调用了add
函数。
在定义函数指针时,可以使用typedef
关键字,使代码更加简洁易懂。例如:
typedef void (*AddFunc)(int, int);
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
int main() {
AddFunc func = add; // 使用typedef定义函数指针类型
func(1, 2);
return 0;
}