当指针作为函数的参数时,函数内部得到的只是一个临时的常量,切勿直接对这个常量进行操作,这样的操作是无效的。只有运用取值符号(*)时,操作才有效。
例如 在链表中的节点插入函数中
void insertNode(TPNODE pHe,TPNODE pNew)
{
/*
* 将节点插入链表中
* 1.寻找链表最后的位置,插入节点
*/
TPNODE pTmp = pHe;
if(NULL == pTmp) //如果头指针为空
{
pTmp = pNew; //这样的赋值操作是无效的
}
else
{
pTmp = pHe->pNext;
while(pTmp)
{
pTmp = pTmp->pNext;
}
pTmp = pNew; //这样的赋值操作是无效的
}
void insertNode(TPNODE pHe,TPNODE pNew)
{
/*
* 将节点插入链表中
* 1.寻找链表最后的位置,插入节点
*/
TPNODE pTmp = pHe;
while(NULL != pTmp->pNext)
{
pTmp = pTmp->pNext;
}
/*
这种赋值是有效的
pTmp->pNext 相当于 (*pHe).pNext,
用取值符号(*)对传进来的指针进行操作,而不是直接对指针进行操作
*/
pTmp->pNext = pNew;
}