*(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;