Chinaunix首页 | 论坛 | 博客
  • 博客访问: 112503
  • 博文数量: 23
  • 博客积分: 975
  • 博客等级: 准尉
  • 技术积分: 262
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-19 00:54
文章分类
文章存档

2011年(2)

2010年(3)

2008年(18)

我的朋友

分类: C/C++

2010-04-02 21:04:47

最近做的一个程序,需要通过DomainSocket把对象(实际是结构体)的指针发送给另一个线程。这就需要先把指针复制到发送缓冲里,再进行发送。如下图所示:



先看代码:

int foo(OBJECT *obj)
{
    char *buffer;
    
    buffer = (char *)malloc(BUFLEN);
    *(EOBJECT **)buffer = obj;

    ...
}


缓冲区通过char指针定义,用malloc申请空间;对象指针以形参的形式传入。buffer所指向的空间要存储一个指针,显然buffer要先通过强制类型转换为指向指针的指针(EOBJECT **)buffer,再对其指向的变量*(EOBJECT **)buffer赋值,结果就如下面代码那样了。咋一看比较费解。
C的指针提供了很好的灵活性,但是也带来不少比较难理解的情况,
熟练使用指针才能发挥c的魅力,写出优雅的代码。
阅读(1613) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~