void DeleteLinkedList(SNode *pStart)
{
SNode* pNode = pStart;
SNode* pDel = NULL;
pDel = pNode;
pNode = pNode->pNext;
free(pDel);
pStart = NULL;
}
이대로 실행하면 마이너스로 뜨는 오류가 발생하였는데요 그래서 &으로 바꾸어서 정상적으로 되었었는데 서로 머가 다른가요 그리고 주로 *으로 접근해서 값을 변경하고 했는데 &는 어떤때에 쓰는가요
void DeleteLinkedList(SNode* &pStart); 를 했다면 정상적으로 작동합니다. 그 이유는 포인터도 변수일뿐이기때문에 참조할때 pStart의 값을 변경해서는 지역변수의 값을 바꿀는것이 됩니다.
그므로 지역변수 pStart가 아닌 pBegin의 값을 변경하기 위해서 참조를 해 직접 pBegin의 값을 변경할수있도록 한겁니다.