显式解引用

这实际上会指定返回值的函数调用goo()到pfoo,这并不是我们想要的。我们希望pfoo被分配到功能良好,没有从goo()返回值。所以没有圆括号是必需的。

请注意,签名(参数和返回值的函数指针必须)函数的签名匹配。这里是一个例子:

1
2
3
4
5
6
7
8
9
10
11
// function prototypes
int foo();
double goo();
int hoo(int nX);
 
// function pointer assignments
int (*pFcn1)() = foo; // okay
int (*pFcn2)() = goo; // wrong -- return types don't match!
double (*pFcn3)() = goo; // okay
pFcn1 = hoo; // wrong -- pFcn1 has no parameters, but hoo() does
int (*pFcn3)(int) = hoo; // okay

调用一个函数使用一个函数指针

你可以用一个函数指针的第二件事是用它来调用函数。有两种方法来做这个。首先是通过显式解引用:

1
2
3
4
5
6
7
int foo(int nX)
{
}
 
int (*pFoo)(int) = foo; // assign pFoo to foo()
 
(*pFoo)(nValue); // call function foo(nValue) through pFoo.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值