美文网首页
返回指针的函数与指向函数的指针

返回指针的函数与指向函数的指针

作者: SimpleSJ | 来源:发表于2018-10-30 16:02 被阅读0次

    1.返回指针的函数

    char * demo();
    int main(int argc, const char * argv[]) {
        char *name = demo();
        printf("----%s\n",name);
        return 0;
    }
    char * demo(){
        char *name = "hello world";
        return name;
    }
    //输出:
    ----hello world
    

    2.指向函数的指针

    总结:这里的指向函数的指针,与c语言的函数,oc中的block有以下的共同点:
    分三步:1.声明 2.定义(实现) 3.调用,指向函数的指针与oc中非常重要的block之间的区别只有一个*

    • 1.为什么指针可以指向一个函数?
      • 函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。
    • 2.针函数的定义和使用
      按照返回值跟参数将函数分为四类,同样对应的是四种类型的指向函数的指针,直接上代码
    #include <stdio.h>
    void printStr(void);
    void constomPrint(char *str);
    int getnums(void);
    int sum(int v1,int v2);
    int main(int argc, const char * argv[]) {
        //指向无参无反函数的指针
        //声明
        void(*p1)(void);
        //定义
        p1 = printStr;
        //调用(执行)
        p1();
        
        //指向有参无反函数的指针
        //声明
        void(*p2)(char *);
        //定义
        p2 = constomPrint;
        //调用(执行)
        p2("sjcool");
        
        
        //指向无参有反函数的指针
        //声明
        int(*p3)(void);
        //定义
        p3 = getnums;
        //调用(执行)
        int a = p3();
        printf("------a:%i\n",a);
        
        //指有无参有反函数的指针
        //声明
        int(*p4)(int,int);
        //定义
        p4 = sum;
        //调用(执行)
        int b = p4(3,5);
        printf("------b:%i\n",b);
        
        return 0;
    }
    void printStr(){
        printf("无参无反\n");
    }
    
    void constomPrint(char *str){
        printf("自定义打印%s\n",str);
    }
    
    int getnums(){
        return 666;
    }
    int sum(int v1,int v2){
        return v1+v2;
    }
    
    //输出:
    无参无反
    自定义打印sjcool
    ------a:666
    ------b:8
    

    相关文章

      网友评论

          本文标题:返回指针的函数与指向函数的指针

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