打印
[资料分享与下载]

妙用void *型指针(万能指针|泛型指针)

[复制链接]
835|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 *型,用来保存异步操作的数据。
这个和飞思卡尔有什么关系呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

381

主题

6080

帖子

34

粉丝