为什么叫万能指针(泛型指针)呢? 因为void型指针可以保存任何类型的指针,在libev中,watcher->data就是void *型,用来保存异步操作的数据。 ---- 看下面的例子: 我先把任意类型的指针赋值给void指针,使用时,先强制转化成原来的指针类型,然后解引,即可得到我们最初保存的数据。
- #include <stdio.h>
-
- int main() {
- void *p = NULL;
-
- int a = 10;
- p = &a;
- printf("a: %d\n", *(int *)p);
-
- float b = 11.22;
- p = &b;
- printf("b: %f\n", *(float *)p);
-
- char *c = "abc";
- p = c;
- printf("c: %s\n", p);
-
- return 0;
- }
|