指针函数和函数指针
指针函数
很简单,就是返回值是指针的函数,记得不要返回局部变量的地址就行
函数指针
就是一个指针,指向是一个函数,个人感觉理解起来比较难
个人的理解
int (*select(char p))(int , int )
一步步来分解
- int (*)(int, int)定义类型,一个函数的指针,这个函数的类型是输入两个int,返回一个int结果的函数的指针
- select(char p) 一个函数,输入一个字节类型的参数p,返回值类型未定义
- *select(char p) 一个函数,返回类型为指针,指针类型未定义
- int (*select(char p))(int, int) 带上定义指针的类型。
函数的名字就是这个函数的地址
#include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int add(int a, int b){ return a + b; } int sub(int a, int b){ return a - b; } int (*select(char p))(int , int ){ switch (p){ case '+': return add; case '-': return sub; } } int calc(int (*p)(int,int), int a, int b){ return p(a,b); } int main(int argc, char** argv) { int a; int b; char op; printf("input formular\n"); scanf("%d%c%d",&a,&op,&b); printf("%d %c %d = %d\n",a,op,b,calc(select(op),a,b));
printf("add func is %d\n", add);
printf("select(op) is %d\n", select(op));
printf("sub func is %d\n", sub);
printf("select(op) is %d\n", select(op));
return 0; }



浙公网安备 33010602011771号