C语言函数和指针(十三)


// myVoid 等价于 (*pf)
void myVoid(char *);
void (*pf)(char *);
// 声明函数的形参为另一个函数
void show(void (*fp)(char *),char *c);


//创建函数指针数组
typedef void(*ppf)(char *);
//数组函数元素
void myVoid2(char *);
void myVoid3(char *);
ppf bb;

int main(int argc, const char * argv[]) {
    
    //因为 myVoid等价于 pf,这里赋值后,下面函数的实参传入 pf函数就等于 把 myVoid函数传入
    pf = myVoid;
    char myChar[] = "my char";
    show(pf, myChar);
    show(myVoid, myChar);
    
    
    //函数指针数组 初始化
    ppf bb[3] = {myVoid,myVoid2,myVoid3};
    for (int i = 0; i< 3; i++) {
        
        char a[10];
        sprintf(a,"%d",i);
        show(bb[i], a);
    }
    
    void (*addPtr)(char *) = myVoid;
    addPtr("dsfsadf");
    
    return 0;
}


void myVoid(char *a)
{
    puts(a);
    
}

void myVoid2(char *b)
{
    puts(b);

}

void myVoid3(char *c)
{
    puts(c);

}

void show(void (*fp)(char *),char *c)
{

    char *str = c;
    //调用 myVoid(char *a)函数
    //(*fp)(str) 等价于 fp(str)
//    (*fp)(str);
    fp(str);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值