天天看点

C/C++的一个字符陷阱

// 移除节点
STGoodsInfo* SingleLink::Remove(STGoodsInfo*pHead, int iPos)
{
  if(NULL == pHead)
  {
    return NULL;
  }
  if(iPos <=0)
  {
    return NULL;
  }

  STGoodsInfo* pTemp = pHead->pNext;
  
  // 遍历到待删除节点的前一个节点
  
  for(int i = 1;i<iPos;i++)
  {
    pHead = pHead->pNext;
    pTemp = pHead;
  }
   
  /*
  STGoodsInfo* pDel = pTemp->pNext; // 第二个节点(待删除节点)
  pTemp->pNext = pDel->pNext;
  free(pDel);
  pDel = NULL;
  */
  // 待删除节点
  STGoodsInfo* pDel = pTemp->pNext;   
  pTemp->pNext == pDel->pNext;
 
  free(pDel);
  pDel = NULL;
  
  return pHead;
}      

在这里有一个陷阱,B代码不小心讲"=" 打成了"==" ,从而引发BUG,但是这样的写法,编译器是不会提示错误的,引以为戒吧