C 공부한지 너무 오래되서 헷갈리네요.. <div><br></div> <div>call by value와 call by reference에 관한겁니다.</div> <div><br></div> <div>예를 들어</div> <div><br></div> <div>struct gujo{</div> <div>int a;</div> <div>int b;</div> <div>}</div> <div>void testFunction(struct gujo table[]);</div> <div><br></div> <div>int main(int argc, char *argv[]){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int i;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>struct gujo origin[10];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>testFunction(origin);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i=0;i<10;i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d \t %d\n",origin[i].a, origin[i].b);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div><br></div> <div>void testFunction(struct gujo table[]){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int i, j;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>struct gujo temp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i=0;i<9;i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(j=i+1;j<10;j++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>temp = table[i];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>table[j]=table[i];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>table[j]=temp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div>이런 형식의 코드를 작성하였습니다.</div> <div><br></div> <div>제가 궁금한거는 main에서 testFunction을 호출할때 call-by-value 형식으로 호출되는걸로 보이는대요</div> <div>testFunction에서는 table로 받아서 치환하기 때문에 table에 복사된 상태로 변경되면 origin에는 영향이 없어야 되지 않나요?</div> <div>실제로 코드를 실행해보면 origin의 순서가 바뀌어 있는데...</div> <div>이런 경우에는 포인터 형식이 아니어도 call-by-reference형식으로 되는건가요?</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.