void insertQueue(Header *header, Node node)
{
if (header != NULL)
{
Node *pNode = (Node*)malloc(sizeof(Node));
*pNode = node;
pNode->nextNode = NULL;
if (header->currentCount == 0)
{
header->frontNode = pNode;
header->rearNode = pNode;
}
else
{
header->rearNode->nextNode = pNode;
header->rearNode = pNode;
}
header->currentCount++;
}
}
아까거랑 마찬가지로 Header*를 넘겨서 큐에 엘리먼트를 넣는건데
큐를 생성하는거랑 참조수준은 결국 똑같잖아
헤더라는 포인터가 가리키는 곳에다가 삽입하는거네 아래에서는 헤더라는 포인터가 가리키는 곳에 새롭게 할당을 했는데 그걸 함수 호출한새끼가 어디다가 했는지 어케 알겠니
malloc이 문제였네.. 근데 어떤 원리인지 아직 잘 감이 안잡혀.. 함수 호출한 놈 입장에서는 이전까지 header가 가리키는 곳이 NULL이기 때문에 함수 안에서 어디에 할당했는지는 모른다는거야?
함수 밖에서 메모리공간을 할당하게 되면, 그 메모리공간에 대한 레퍼런스가 생기니까 참조할수 있는거고?
주소의 복사
너는 매개변수에 포인터를 넘겼을때 그게 연결되어 있다고 생각해서 발생하는 괴리인듯하다 포인터변수라고 해도 값만 복사되서 넘어간것일뿐이지, 아래글에서는 파라미터의 포인터변수에 맬롴으로 새로운값을 대입했다 호출한새끼가 그게 무슨값인지 어케아냐 아래글에도 달린댓글처럼 니가 의도한대로 함수호출하면 알아서 바뀌길 기대한다면 포인터의 포인터를 써야지