<div><br></div>아래 포인터 질문에 대해서 포인터는 다른 분들이 다들 잘 설명 하셔서 그냥 제가 사용하는 예 함 올려 보겠습니다. <div><br></div> <div>먼저 const 키워드 입니다. <div><br><div> <div>class User</div> <div>{</div> <div>protected:</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int val[4];</div> <div><span style="font-size:9pt;line-height:1.5;">public:</span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>User() <span style="font-size:9pt;line-height:1.5;">{</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">val[0] = 100; </span><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">const int* const Val() const { return val; }</span></div> <div>};</div> <div><br></div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>User cc;</div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">const int* const val = (int*)cc.Val();</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">// 이렇게 </span></div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">val[0] = 200;</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">// 에러 납니다.</span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>val = NULL; // 에러 납니다.</div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">return 0;</span></div> <div>}</div></div> <div><br></div></div></div> <div>반환 val은 읽기 만 가능합니다.</div> <div><br></div> <div>그런데 여기서 <span style="font-size:9pt;line-height:1.5;"> int* val = (int*)cc.Val();</span><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;"> 이렇게 하면 읽기/쓰기 가능합니다. </span></div> <div><br></div> <div>2 번 째 double pointer 입니다. 참 많은 예가 있는데요, <span style="font-size:9pt;line-height:1.5;">먼저 객체의 생성입니다.</span></div> <div><br></div> <div>int CreateInstance( User** pOut....)</div> <div>{</div> <div>if(어떤 이유에서 객체 생성이 false가 되었을 때)</div> <div> *pOut = NULL;</div> <div> return -1;</div> <div><br></div> <div>*pOut = new User;</div> <div>return 0;</div> <div><br></div> <div>User* puser;</div> <div>CreateInstance(&puser);...</div> <div><span style="font-size:9pt;line-height:1.5;">이런 경우 이중 포인터가 필요하죠. 객체 생성을 실패하면 puser는 NULL 로 초기화 되겠지요.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;">이중 포인터가 많이 사용되는 곳 => 정렬입니다. 이 부분은 공부하시라고 남겨 놓겠습니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.