用指针调用函数的不同形式

用指针调用函数的不同形式

Ma Jia nan
2006-1-16



    最初一个函数指针必须用*操作符(和一对括号)“转换为”一个“真正的”函数才能调用,如下所示:

    int r, func(), (*pf)() = func; //函数指针的初始化
    r = (*pf)();  //函数的指针调用形式1,等价于 r = func();

    函数总是通过指针进行调用的,所有“真正的”函数名总是隐式的退化为指向该函数的指针,正如在对函数指针pf初始化做的那样:

    int func();
    int (*pf)() = func;

    这有点类似数组名的行为(不带下标操作符的数组名会被解释成指向数组首元素的指针)。

    以上结论表明,下面的语句也是正确的。

    r = pf();     //函数的指针调用形式2

    ANSI C 标准实际上接受形式2,这意味着不再需要*操作符,但形式1依然允许。两种形式产生相同的结果,但是形式1让读者更清楚该调用是通过函数指针执行的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值