最近做的一个程序,需要通过DomainSocket把对象(实际是结构体)的指针发送给另一个线程。这就需要先把指针复制到发送缓冲里,再进行发送。如下图所示:
先看代码:
int foo(OBJECT *obj)
{
char *buffer;
buffer = (char *)malloc(BUFLEN);
*(EOBJECT **)buffer = obj;
...
}
|
缓冲区通过char指针定义,用malloc申请空间;对象指针以形参的形式传入。buffer所指向的空间要存储一个指针,显然buffer要先通过强制类型转换为指向指针的指针
(EOBJECT **)buffer,
再对其指向的变量
*(EOBJECT **)buffer赋值,结果就如下面代码那样了。咋一看比较费解。
C的指针提供了很好的灵活性,但是也带来不少比较难理解的情况,
熟练使用指针才能发挥c的魅力,写出优雅的代码。
阅读(1639) | 评论(0) | 转发(0) |