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

2018-10-30  本文已影响0人  SimpleSJ

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之间的区别只有一个*

#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
上一篇下一篇

猜你喜欢

热点阅读