学好函数指针有着较为重要的意义,如Windows编程中WNDCLASS结构体的 lpfnWndProc 成员就是一个函数指针,下面介绍简单的函数指针应用。
void ToUpper(char *);
void ToLower(char *);
int round(double);
/**
*声明了一个名为pf的函数指针, 该函数指针可以指向一个函数
*该函数特点:返回值为void类型,该函数接受一个参数,参数类型为 char *型
**/
void (*pf)(char *);
/**
*声明了一个名为pk的函数指针, 该函数指针可以指向一个函数
*该函数特点:返回值为void类型,该函数接受一个参数,参数类型为 int *型
**/
void (*pk)(int *);
pf = ToUpper;//正确用法,ToUpper是函数ToUpper()的地址
pf = ToLower;//正确
pf = round;//错误, round为错误类型的函数
pf = Tolower();//无效,ToLower不是地址
尝试将不同返回值类型的函数赋值给函数指针:
错误信息:
下面演示下正确的用法
#include <cstdio>
void print_v(int);
int print_i(int);
int main(){
void (*pv)(int);
int (*pi)(int);
//pv = print_i;
pv = print_v;
pv(4);
return 0;
}
void print_v(int value){
printf("%d\n", value);
}
int print_i(int value){
printf("%d\n", value);
return value;
}
程序截图如下: