|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2827 [복사]
LinkedList를 공부하고 있는데
질문이 있습니다.
ind addLLElement(LinkedList *pList, int position, ListNode element)
{
int ret = FALSE;
int i = 0;
ListNode* pPreNode = NULL;
ListNode* pNewNode = NULL;
if(pList != NULL){
if(position >=0 && position < pList->currentElementCount){
pNewNode = (ListNode*)malloc(sizeof(ListNode));
if(pNewNode != NULL){
*pNewNode = element;
pNewNode->pLink = NULL;
pPreNode = &(pList->headerNode);
for(i=0; i<pList->currentElementCount; ++i){
pPreNode = pPreNode->pLink;
}
pNewNode->pLink = pPreNode->pLink;
pPreNode->pLink = pNewNode;
pList->currentElementCount++;
ret = TRUE;
}
else
{
printf("오류, 메모리할당 addLLElement()\n");
return ret;
}
}
else
{
printf("오류, 위치 인덱스-[%d], addElement()\n");
}
}
return ret;
}
int main()
{
...
LinkedList *pList = NULL
LinkedListNode node;
node.data = 5;
pList = createLinkedList();
addLLElement(pList, 0, node);
...
}
node의 값을 복사해서 addLLElement()함수로 보내준 후에
addLLElement()함수에서 pNewNode로 대입 하잖아요.
pNewNode는 함수가 종료되면 사라지는 것 아닌가요?
요약 : node를 포인터로 안하고 call by value로 처리하면 addLLElement()함수가 종료되버리면 main함수에 아무런 영향을 주지 못하는것 아닌가요? |
Hit : 4123 Date : 2010/12/30 01:37
|