我试图理解在C++中用作参数的一段代码,但我似乎无法在互联网上的其他地方找到它的另一个例子.这是片段:
void (*cb)(void)
Run Code Online (Sandbox Code Playgroud)
这是初始化void指针的另一种方法吗?这样做的好处是什么void *cb
?
在这个例子中,cb是一个指向函数的指针,该函数不带参数且没有返回值
例如,如果我有
void printHello( ) {
cout << "hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)
那我以后可以
void (*cb)(void);
cb = printHello;
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法调用函数:
cb();
Run Code Online (Sandbox Code Playgroud)
这将调用printHello();
这样做的用处是我现在可以为cb分配不同的函数并调用它们并将它们传递给其他函数,就像任何其他指针变量一样.
通常为了清楚起见,程序员将为此创建一个特定的类型,以避免写这个:
typedef void (*tPrtToVoidFn)(void);
tPtrToVoidFn cb;
cb = printHello;
Run Code Online (Sandbox Code Playgroud)
为了比较,指向返回int的函数的指针如下所示:
int (*ptrToFunctionReturningInt)(void);
Run Code Online (Sandbox Code Playgroud)
并且指向函数的指针采用int并且不返回任何内容,如下所示:
void (*ptrToFunctionReturningNothing)(int);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1698 次 |
最近记录: |