2012-03-30 3 views
0

가능한 중복 :
pass by reference not working링크 목록에서 "포인터"와 "포인터 포인터"의 사용에 혼동

내가 스탠포드의 튜토리얼 linklistproblem의 일부를 통과했다 인터넷, 난 자습서의 페이지 5에있는 링크 목록에 "포인터"와 "포인터에 대한 포인터"의 사용을 혼란스러워합니다.

함수 1

changeTonull(&head) //passing by pointer to head pointer of link list 

void changeTonull(struct node ** headref) // function defination 

    { 
     *headref = NULL; 
    } 

함수 2 : 난 포인터에 대한 포인터를 전달하고 상기 제 함수

changeTonull(head) // passing head pointer of link list 

void changeTonull(struct node * headref) // function defination 

    { 
     headref = NULL; 
    } 

,

를 NULL로 링크리스트의 헤드 포인터의 값을 변경하기위한

두 번째 함수에서 링크 포인터의 머리 포인터 값을 NULL로 변경하기 위해 포인터 만 전달합니다.

자습서에서 말하는 것은 링크 목록의 헤드 포인터 값을 변경하는 첫 번째 기능을 사용하는 것이 더 낫습니다. 이유가 무엇입니까?

linklistproblem 페이지 번호 5 자습서를 확인할 수도 있습니다.

+0

이 질문은 여러 번 반복되었습니다. 왜 먼저 검색하지 않습니까? –

답변

2

자습서는 두 번째 방법이 작동하지 않기 때문에 첫 번째 방법을 사용하라고 알려줍니다.

C FAQ의 Question 4.8은 정확하게 문제에 관한 것입니다.

+0

안녕하세요, 고맙습니다. 칼 ..... ..... 지금 나는 .. 바보 같은 실수를하고 있습니다. – priyaranjan

관련 문제