指针函数和函数指针

 

指针函数

  很简单,就是返回值是指针的函数,记得不要返回局部变量的地址就行

函数指针

  就是一个指针,指向是一个函数,个人感觉理解起来比较难

 

个人的理解

int (*select(char p))(int , int )
一步步来分解
  1.   int (*)(int, int)定义类型,一个函数的指针,这个函数的类型是输入两个int,返回一个int结果的函数的指针
  2.   select(char p)  一个函数,输入一个字节类型的参数p,返回值类型未定义
  3.   *select(char p)  一个函数,返回类型为指针,指针类型未定义
  4. 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;
}

 

 

 

posted @ 2022-01-12 12:16  Greatday  阅读(7)  评论(0)    收藏  举报