2014-01-28 3 views
3

구조체를 사용하여 링크 된 목록을 구현하고 있습니다. 구조가 있습니다 -C에서 이중 포인터를 통해 구조체 요소에 액세스

typedef struct llist node; 
typedef node *nodeptr; 
struct llist 
{ 
    int data; 
    nodeptr next; 
}; 

이제 변수를 선언하면 nodeptr *ptr;입니다. ptr을 사용하여 datanext 회원에게 어떻게 액세스합니까?

답변

3

첫 번째 포인터와 두 번째 포인터를 결정합니다.

데이터에 액세스하고 ->*보다 더 높은 우선 순위를 가지고 있기 때문에 PTR이 필요 주위 구조 문에서 다음이

(*ptr)->data = 5; 
(*ptr)->next = temp; 

브래킷을하고 싶습니다.

-> (예 ptr->data*ptr.data가 동일하다) *.를 작성하는 것과 같다.

+0

그래서'(* ptr) = (nodeptr *) malloc (sizeof (nodeptr))'이라는 올바른 메모리를'ptr '에 할당하고 싶다고합시다. – nsane

+0

그래도해볼 수는 있지만 ptr이 임의의 주소를 가리키고 있기 때문에 세분화 오류가 발생할 수 있으므로 먼저 구조체에 대한 포인터를 만들어서 ptr에 할당해야합니다. – const

관련 문제