<div><span style="font-size: 9pt; line-height: 1.5">포인터가 어려운 것은 아마도 사용 방법 때문인 것 같습니다.</span></div> <div><br /></div> <div>c언어 처음 배울 때 포인터 공부할 때 <span style="font-size: 9pt; line-height: 1.5">포인터라는 것이 단순하게 걍 장치, 코드, 또는 메모리 주소 라는 것을 확인하려고 만들었던 </span><span style="font-size: 9pt; line-height: 1.5">예제입니다.</span></div> <div><br /></div> <div> <div> <div> <div>#include < stdio.h></div> <div><br /></div> <div>// 테스트 함수</div> <div>void func()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" function pointer call \\n");</div> <div>}</div> <div><br /></div> <div><br /></div> <div>// 함수 포인터 호출 함수</div> <div>void test_call(void* v)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>// 특수하게 인수가 함수의 주소로 가정하고 강제로 캐스팅 후 호출.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>((void (*)())v)();<span class="Apple-tab-span" style="white-space: pre"> </span>//__asm { call v }</div> <div>}</div> <div><br /></div> <div><br /></div> <div>int main(int, char**)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int<span class="Apple-tab-span" style="white-space: pre"> </span>v=0x1234;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int<span class="Apple-tab-span" style="white-space: pre"> </span>(*p);<span class="Apple-tab-span" style="white-space: pre"> </span>// 포인터</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int<span class="Apple-tab-span" style="white-space: pre"> </span>(**pp);<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>p = &v;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>pp = &p;</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("address: ------------------------------- \\n");</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" val: 0x%X \\n", v);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" add: 0x%X \\n", &v);</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("포이터 참조(&), 역참조(*): ------------ \\n");</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" *p: 0x%X \\n", *p);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" p: 0x%X \\n", p);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" &p: 0x%X \\n", &p);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" *&p: 0x%X \\n", *&p);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" **&p: 0x%X \\n", **&p);</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("이중 포이터 참조(&), 역참조(*): ------- \\n");</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" **pp: 0x%X \\n", **pp);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" *pp: 0x%X \\n", *pp);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" pp: 0x%X \\n", pp);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" &pp: 0x%X \\n", &pp);</div> <div><br /></div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("function pointer: ---------------------- \\n");</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>void (*cc)(void) = func;<span class="Apple-tab-span" style="white-space: pre"> </span>// 함수 포인터에 함수 주소 저장</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("func add: %p \\n", cc);<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>test_call(cc);<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>return 0;</div> <div>}</div></div></div></div> <div><br /></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.