2015-01-29 3 views
3
struct node{ 
     int data; 
     struct node *next; 
    }; 
main(){ 
    struct node a,b,c,d; 
    struct node *s=&a; 

    a={10,&b}; 
    b={10,&c}; 
    c={10,&d}; 
    d={10,NULL}; 


    do{ 
     printf("%d %d",(*s).data,(*s).next); 

     s=*s.next; 
    }while(*s.next!=NULL); 

} 

그것은 = {10, & B}에서 오류를 보이고 발현 syntex의 error.please 도움 .. 미리 thankzz오류 : 예상되는 표현 앞에 '{'토큰 |

+1

compound literal를 사용하는

struct node a={10,&b}; 

을 그렇지 않으면, 당신은 한 사용 -a-struct-in-ansi-c는 다른 훌륭한 대답을 제공합니다. –

+0

이 언어는'- *'연산자를 제공하므로'(* s) .next'보다는's-> next'라고 말할 수 있습니다. – AAT

답변

3

바로 변수를 초기화가 :

struct node a={10,NULL}; 

다음 할당 주소 :

a.next = &b; 

또는 리터럴 화합물을 사용

,
a=(struct node){10,&b}; //must be using at least C99 
+0

우리가 = (구조체 노드) {10, & b}에서 초기화시에 형 변환하는 이유는 무엇입니까? ... thankzzz –

+0

@RohitGoel 이것은 할당이고, 이미 초기화되어 있습니다. 이것은 복합 리터럴이며,이를 사용하기 위해 선택된 구문입니다. – reader

+0

@RohitGoel _cast_에 관한 질문은 my asnwer에서 제공하는 링크에서 잘 설명되어 있습니다. 그것을 확인하십시오. –

3

정의 시간에 브래킷을 사용하여 구조체 변수를 초기화 할 수 있습니다. http://stackoverflow.com/questions/330793/how-to-initialize에서 봐 [와 c99 위]

a=(struct node){10,&b}; 
관련 문제