iOS入门(十四)函数指针

来源:互联网 发布:万国数据科技公司电话 编辑:程序博客网 时间:2024/05/16 15:43
函数指针
函数名代表函数的内存地址(入口地址)
函数指针定义  :(指针名可以代表函数名)

//    int (*p ) ( int , int) = maxValue;       or

    int (*p) ( int ,int)= NULL;

    p = maxValue;

重命名:


 typedef int  (*PFUN) (int ,int ) ;       PFUN p= NULL;

动态排序

函数指针数组

返回值是函数指针

动态调用 


输入一句英文句子,将其中所有的单词首字母转换成大写,用回调函数实现。


动态函数调用实现下列操作:输入两个数以及操作符计算结果。@求最大公约数    ¥ 求最小公倍数

main .m

 

   printf(" 题目一 :    \n");

    char str[] = "i want a pencil";

    zheng(str);

    for ( int i = 0 ;  i < strlen(str) ; i ++ ) {

        printf("%c" , str[i]);

    }

    printf("\n");

    

    printf( " 题目二   :   \n");

    int a = 0 ,b = 0 ;

    scanf("%d,%d" , &a , &b ) ;

    printf("%d\n" , dongtai(a, b, '$'));

.h

 

char hange(char  s );

typedef  char (*PF)  (char);

void zheng(char  * s );



int maxGY(int a , int b ) ;

int minGB(int a , int b ) ;

typedef  int (*PFU) (int , int ) ;

struct func{

    char  a ;

    PFU  b ;

};

typedef struct func  Choose;

PFU changefun(char *s) ;

int dongtai ( int a , int b , char c  ) ;

.m

 

char hange(char  s )

{

    char t = s - 32;

    s = t ;

    return  s ;

}

void zheng(char  *s )

{

    PF p = hange;

    if (s[0] >= 'a' || s[0] <= 'z') {

        s[0] = p (s[0]);

    }

    int i = 1 ;

    while (s[i] != '\0') {

              if (s[i] == ' ' )

        {

            s[i+1] = p( s[i + 1 ] );

            i ++ ;

        }

        i ++ ;

    }

}



int maxGY(int a , int b )

{

    while (a%b != 0 ) {

        int temp = a%b;

        a = b ;

        b = temp ;

    }

    return b ;

}

int minGB(int a , int b )

{

    return a*b/maxGY(a, b);

}

PFU changefun(char *s)

{

    Choose xuan[2] = {{'@' , maxGY} , { '$' , minGB}};

    PFU pp = NULL ;

    for (int i = 0 ;  i < 2 ;  i ++ ) {

        if (*s == xuan[i] . a) {

            pp = xuan[i] . b;

            break;

        }

    }

    return pp;

}

int dongtai ( int a , int b , char c )

{

    PFU p = changefun(&c );

    int dd = p(a,b);

    return dd;

}

    printf(" 杨辉三角\n\n");

    int array[9][9] = { } ;

    for (int i = ; i <  i ++ ) {

        array[i][0] = ;

        array[i][i] = 1;

        for (int j =  j

            array[i][j] = array[i-1][j-1] + array[i-1][j];

        }

    }

    for (int i =  i <  i ++ ) {

        for (int j =  j > i ; j --) {

            printf("  ");

        }

        for (int k =  k <= i ;  k ++ ) {

            printf("-  " , array[i][k]);

        }

        printf("\n");

    }

    }

0 0
原创粉丝点击