美文网首页
函数和指针

函数和指针

作者: artsing | 来源:发表于2018-05-14 17:41 被阅读0次

    函数指针: 指向函数的指针(是指针)
    指针函数:返回值是指针的函数(是函数)

    #include <stdio.h>
    #include <stdlib.h>
    
    #define DF(N) int N(int x, int y) { return x * y; }
    
    DF(fa); DF(fb); DF(fc);
    
    typedef int (*pfun) (int x, int y);
    
    int main() {
            int i;
            pfun *p;
    
            p = (pfun *) malloc(sizeof(pfun) * 3);
            p[0] = fa;
            p[1] = fb;
            p[2] = fc;
    
            int (**p1) (int x, int y);
            p1 = (int (**) (int x, int y))  malloc(sizeof(int (*) (int x, int y)) * 3);
            p1[0] = fa;
            p1[1] = fb;
            p1[2] = fc;
    
            for (i=0; i<3; i++) {
                    printf("%d\n", (p1[i])(i+1, i+1));
            }
            return 0;
    }
    
    
    1.  void* (*(*f1) (int)) [10];
    2.  float (*(*f2) (int, int, float)) (int);
    3.  double (* (* (*f3) ()) [10]) ();
    4.  int (* (* f4()) [10]) ()
    
    1. f1是一个函数指针,指向的函数有一个int参数和一个指针返回值,该指针返回值指向一个大小为10的空类型指针数组;
    2. f2是一个函数指针,指向的函数有int,int,float三个参数和一个指针返回值,该指针返回值指向一个参数为int返回值为float的函数;
    3. f3是一个函数指针,指向的函数无参且返回一个数组指针,该数组指针指向一个含有10个函数指针的数组,数组类型是指向无参且返回值为double的函数指针;
    4. f4是一个无参函数,该函数返回一个大小为10的函数指针数组,函数指针指向无参且返回int的函数。
    

    相关文章

      网友评论

          本文标题:函数和指针

          本文链接:https://www.haomeiwen.com/subject/wbnddxtx.html