c – Void指针初始化?如果没有,那是什么?
发布时间:2020-12-16 10:11:24 所属栏目:百科 来源:网络整理
导读:我试图理解在C中用作参数的一段代码,但我似乎无法在互联网上的其他地方找到它的另一个例子.这是片段: void (*cb)(void) 这是初始化void指针的另一种方法吗?这样做对虚空* cb有什么好处? 解决方法 在这个例子中,cb是一个指向函数的指针,该函数不带参数且没
我试图理解在C中用作参数的一段代码,但我似乎无法在互联网上的其他地方找到它的另一个例子.这是片段:
void (*cb)(void) 这是初始化void指针的另一种方法吗?这样做对虚空* cb有什么好处? 解决方法
在这个例子中,cb是一个指向函数的指针,该函数不带参数且没有返回值
例如,如果我有 void printHello( ) { cout << "hello" << endl; } 那我以后可以 void (*cb)(void); cb = printHello; 我可以使用以下方法调用函数: cb(); 这将调用printHello(); 这样做的用处是我现在可以为cb分配不同的函数并调用它们并将它们传递给其他函数,就像任何其他指针变量一样. 通常为了清楚起见,程序员将为此创建一个特定的类型,以避免写这个: typedef void (*tPrtToVoidFn)(void); tPtrToVoidFn cb; cb = printHello; 为了比较,指向返回int的函数的指针如下所示: int (*ptrToFunctionReturningInt)(void); 并且指向函数的指针采用int并且不返回任何内容,如下所示: void (*ptrToFunctionReturningNothing)(int); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |