读书人

*(char*)指针有关问题

发布时间: 2012-06-11 17:42:22 作者: rapoo

*(char**)指针问题
最近调入了一个项目,在看前任的代码的时候,发现在实现队列时,他采用了如下的方法:

while(uq->pHead)
{
char *tmp = uq->pHead;
uq->pHead = *(char **)tmp;
//...
}

uq是一个结构体变量,定义如下:
typedef struct {
char* pHead;
//...
} Queue;

我很困惑,比如假设*(uq->pHead)=32(也就是 空格),那*(char**)tmp的意思就是把这个32转换成指针形式,这是啥意思呢?求回答

[解决办法]
这个的意思就是删除第一个节点。具体来说就是将链表中的第一个节点 pHead指针值改为第二个pHead的值,第二个改为第三个的,依次类推

C/C++ code
char *tmp = uq->pHead;uq->pHead = *(char **)tmp;
[解决办法]
说反了,第二个改变为第一个的值,第三个改变为第二个的值~具体的实现还要看他其他内容。

C/C++ code
struct Queue first;struct Queue second;struct Queue third;second.pHead = &first;third.pHead = &second; 

读书人网 >C语言

热点推荐