2014-12-28 4 views
1

저는 C에서 새로운 것이므로 연결된 목록을 구현하려고합니다. 나는 이것을 썼다 :구조체에 대한 포인터와 호환되지 않는 포인터 유형에서의 할당

struct List; 
typedef struct List* ListRef; 
struct List{ 
     void *data; 
     ListRef next; 
     ListRef last; 
}; 

ListRef newList(void* headData); 
[...] 

ListRef append(ListRef list, void* data){ 

     ListRef newlist = newList(data) 

     list->last->next = newList; //here I get a warning 
     list->last = newList; //here I get a warning 

     return newList; 
} 

newList는 경고없이 컴파일된다.

경고 : 내가 잘못 뭐하는 거지 호환되지 않는 포인터 타입

에서 할당 내가 얻을 주석이있는 두 줄에서 ?

감사합니다.

+1

을하는 데 도움이

당신은 확실히 코드를 해달라고. – alk

+5

'newList()'함수와 같은 이름 *보다 로컬 자동 변수'newList'에 대해 다른 이름을 심각하게 고려하십시오. 의도적으로 코드를 난독 화하려고 시도하지 않는 한 오류를 처리하는 방법입니다. – WhozCraig

답변

2

변경

list->last->next = newList; //here I get a warning 
    list->last = newList; //here I get a warning 

    return newList; 

list->last->next = newlist; //here I get a warning 
    list->last = newlist; //here I get a warning 

    return newlist; 

분석

에 :

당신은 당신이 만든 구조의 인스턴스 (newlist)와 혼합 업이있는, newList라는 기능이있다. `newList (데이터)`: 당신은 C.에 새처럼 :) 희망이 후이없는 세미콜론

+0

오, 그게 정말 어리 석고 ... 고마워요! –

관련 문제