<div><br></div> <div>아래의 코드에서 어째서 <span style="font-size:9pt;line-height:1.5;">printf("sizeof(*items):%d\n",sizeof(*items));의 값이 8이 나오나요?</span></div> <div><span style="font-size:9pt;line-height:1.5;">item은 배열 items[]의 시작주소니까 포인터라는 건 알겠는데요.</span></div> <div>이 <span style="font-size:9pt;line-height:1.5;">*item</span><span style="font-size:9pt;line-height:1.5;">부분을 비주얼 스튜디오의 디버그의 조사식 창에 드래그해서 나오는 주소값을 메모리창을 띄워서 헥스값을 보니까 </span><span style="font-size:9pt;line-height:1.5;">INSERT문자열이 아스키 코드값으로 저장되어 있더군요. 그래서 INSERT의 문자수를 줄이면 *item의 크기도 줄어들것 같아서 한번 소스코드의 </span><span style="font-size:9pt;line-height:1.5;">{"INSERT", insert}부분을 </span></div> <div>{"IN", insert}으로 고치고 실행 해봐도 계속 <span style="font-size:9pt;line-height:1.5;">printf("sizeof(*items):%d\n",sizeof(*items));에서 8이 나오더군요.</span></div> <div><span style="font-size:9pt;line-height:1.5;">아무리 생각해도 애초에 구조체를 지정할때 </span>char *title;에서 title가 가리키는 주소에서 무조건 8바이트를 할당하는 것 같은데</div> <div>그 이유를 통 알수 없네요.</div> <div>혹시 아시는 분 계시면 그 이유를 가르쳐 주셨으면 좋겠네요.</div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div> <div>#include <stdio.h></div> <div><br></div> <div>typedef struct memu</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char *title;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>void (*func)(void);</div> <div>}MENUITEM;</div> <div><br></div> <div>void insert(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("insert\n");</div> <div>}</div> <div><br></div> <div>void print(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("print()\n");</div> <div>}</div> <div><br></div> <div>void search(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("search() 호출...\n");</div> <div>}</div> <div><br></div> <div>void del(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("del() 호출...\n");</div> <div>}</div> <div><br></div> <div>void end(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("end() 호출...\n");</div> <div>}</div> <div><br></div> <div>void modify(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("modify() 호출...\n");</div> <div>}</div> <div><br></div> <div>int main(void)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>MENUITEM items[] = {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{"INSERT", insert},</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{"PRINT", print},</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>//{"SEARCH", search},</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{"MODIFY", modify},</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{"DELETE", del},</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{"END", end}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>};</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>/*while(1)*/</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> printf("sizeof(*items):%d\n",sizeof(*items));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> printf("sizeof(items):%d\n",sizeof(items));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>/*<span class="Apple-tab-span" style="white-space:pre;"> </span>puts("*** MENU ***");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(int i = 0; i < sizeof(items) / sizeof(*items); i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d. %s\n", i+1, items[i].title);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("choice : ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int no;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>scanf("%d", &no);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fflush(stdin);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>items[no-1].func();*/</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.