二级指针的一个问题
{char* p,*q;
if(!(q=(char*)malloc(NODESIZE))
{
printf("error");
return -1;
}
······
*(char**)p=q;p=q;
······
}
这几句代码是截取出来的,创建链表用的,p是节点,q是新开辟的节点指针,
*(char**)p=q;p=q; 这两句代码连在一起是什么意思?前者的意思是相当于把q的值赋给p吗? 强制转换是临时的,但是这里第一句强制转换p为char**,那么到了p=q这里的p是char**还是char*呢?
[ 本帖最后由 黄昏黄昏 于 2013-3-11 19:10 编辑 ]










,关键是(char **)p,将p的内容(地址)转为二级指针,如果此时p并没有初始化,再进行*p运算,就会得到一个随机空间来存放q,这样做十分有问题。