<div>시중에 나온 다시 체계적으로 배우는 c언어 포인터 라는 책을 사서보니까 263page에 아래같은 소스가 있더군요.</div> <div>자기참조 구조체(링크드 리스트)인데요</div> <div>첫번째 구조체 포인터를 전역변수로 만들어서 따로 HEAD로 보관하다가 자주 사용하는 student구조체 포인터를 계속 next에 써주면서 링크시키다가 </div> <div>마지막 링크에는 NULL값을 넣고 출력할때는 HEAD에 보관한 포인터를 printf에 대입해서 반복문으로 NULL값이 나올때 까지 계속 출력하는 내용은 이제 이해가 되는데</div> <div>문제는 #define V {} 이게 도대체 무슨 의미 인지 모르겠네요.</div> <div>V가 컴파일전에 무조건{}로 치환되는데 이게 왜 있는거죠?</div> <div>한번 없애고 실행해보니 잘되던데 꼭 필요한 거예요?</div> <div>이 define문은 여기서 별로 있을 필요가 없는거 같은데 </div> <div>이 정의문의 의미가 무엇이고 여기서 꼭 필요한 건지 알고 싶네요.</div> <div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div><br></div> <div><br></div> <div>#define OFF 0</div> <div>#define ON 1</div> <div>#define V {}</div> <div><br></div> <div>typedef struct lists{</div> <div>char * name;</div> <div>int grade;</div> <div>struct lists *next;</div> <div>}list;</div> <div><br></div> <div>static list *HEAD;</div> <div>static list *student;</div> <div><br></div> <div>/**************************************************** */</div> <div>/* MAIN */</div> <div>/**************************************************** */</div> <div><br></div> <div>int main()</div> <div>{</div> <div> void init_node();</div> <div> void insert_node(char*,int);</div> <div> void print_node();</div> <div> void end_node();</div> <div><br></div> <div>V init_node();</div> <div> insert_node("archie",75);</div> <div> insert_node("Park Mi Kyung",94);</div> <div> insert_node("Park Une Ju",63);</div> <div> insert_node("Park Une Young",72);</div> <div> insert_node("Park Mi Ra",86);</div> <div> insert_node("Park Jung Suk",32);</div> <div> V end_node();</div> <div> V print_node();</div> <div> return 0;</div> <div>}</div> <div>/* *********************************************** */</div> <div>/* init_node() */</div> <div>/* ************************************************* */</div> <div>void init_node()</div> <div>{</div> <div>HEAD=(list*)malloc(sizeof(list));</div> <div>HEAD->next=NULL;</div> <div>}</div> <div><br></div> <div><br></div> <div>/* ************************************************ */</div> <div>/* insert_node() */</div> <div>/* *********************************************** */</div> <div>void insert_node(char* name,int grade)</div> <div>{</div> <div> static int flag=OFF;</div> <div><br></div> <div><br></div> <div> if(flag==OFF)</div> <div> {</div> <div> student=(list*)malloc(sizeof(list));</div> <div> student->name=name;</div> <div> student->grade=grade;</div> <div> student->next=NULL;</div> <div> HEAD=student;</div> <div> flag=ON;</div> <div> }</div> <div> else</div> <div> {</div> <div> list* imsi;</div> <div> imsi=(list*)malloc(sizeof(list));</div> <div> imsi->name=name;</div> <div> imsi->grade=grade;</div> <div> imsi->next=NULL;</div> <div> student->next=imsi;</div> <div> student=student->next;</div> <div> }</div> <div>}</div> <div>/* ************************************* */</div> <div>/* end_node() */</div> <div>/* ************************************* */</div> <div>void end_node()</div> <div>{</div> <div> list *imsi;</div> <div> imsi=(list*)malloc(sizeof(list));</div> <div> imsi->next=NULL;</div> <div> student->next=imsi;</div> <div>}</div> <div><br></div> <div>/* ************************************ */</div> <div>/* print_node() */</div> <div>/* ************************************ */</div> <div>void print_node()</div> <div>{</div> <div> for(student=HEAD;student->next;student=student->next)</div> <div> printf("%d %s\n",student->grade,student->name);</div> <div>}</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.