[资料分享与下载] 妙用void *型指针(万能指针|泛型指针)

[复制链接]
1053|1
 楼主| 東南博士 发表于 2015-9-20 14:25 | 显示全部楼层 |阅读模式
为什么叫万能指针(泛型指针)呢?
因为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;  
  • }  

cowboy2014 发表于 2015-9-20 20:34 | 显示全部楼层
为什么叫万能指针(泛型指针)呢?
因为void型指针可以保存任何类型的指针,在libev中,watcher->data就是void *型,用来保存异步操作的数据。
这个和飞思卡尔有什么关系呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

6103

帖子

35

粉丝
快速回复 在线客服 返回列表 返回顶部