2012-11-20 5 views
1

나는 그것을 이해할 수 없다. 이것은 내가 지금까지 가지고있는 것이다.구조체를 참조로 전달하는 방법은 무엇입니까?

그러나 함수 Enqueue()은 주 방법의 객체를 Head & Tail으로 변경하지 않습니다.

어떻게하면됩니까?

#include <stdio.h> 

typedef struct queuenode{ 
    int data; 
    struct queuenode *next; 
} Queue_type; 

void Enqueue(Queue_type *head, Queue_type *tail , int item) 
{ 
    Queue_type *temp; 
    temp->data = item; 
    temp->next = NULL; 
    if (tail == NULL){//if first node 
     head=temp; 
     tail=temp; 
    } 
    else{ 
     tail->next = temp; 
     tail = temp; 
    } 
} 

void main(void) 
{ 
    Queue_type *Head; 
    Queue_type *Tail; 

    Head = NULL; 
    Tail = NULL; 

    printf("\n[*]Enter Number to Enqueue : "); 
    scanf("%d", &item); 
    Enqueue(Head, Tail, item); 

} 
+0

Queue_type 개체에 메모리를 할당하지 않는 문제가 추가로 있습니다. – Lalaland

+0

참조로 어디를 지나가고 있는지 알 수 없습니다. 더 자세하게 얘기해 주 시겠어요? 포인터를 전달한다는 의미입니까? –

+0

옵션 대화 상자를 지나면 탭을 공백으로 확장하도록 편집기를 설정하십시오 ... – 6502

답변

8

참조로 포인터를 전달하는 방법은 무엇입니까? 참조를 전달합니다

void Enqueue(Queue_type *&head, Queue_type *&tail , int item) 

기타 문제 :

Queue_type *temp; 
temp->data = item; 

이 정의되지 않은 동작입니다.

Mandatory link. 당신은 C++ 환경에서 C 코드를 작성하고 있습니다. 그냥 하지마.

+0

... 또는 포인터 포인터 ('Queue_type ** head'), 독을 선택하십시오 ... – Nim

관련 문제