<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="html">블로그는 귀차니즘: 일반적인-오류-Call-By-Reference-in-C에 달린 최근 댓글/트랙백 목록</title>
  <id>http://www.filewiki.net/tc/</id>
  <link rel="alternate" type="text/html" hreflang="ko" href="http://www.filewiki.net/tc/" />
  <subtitle type="html">First Sensation</subtitle>
  <updated>2009-01-06T19:29:10+09:00</updated>
  <generator>Textcube 1.7.5 : Risoluto</generator>
  <entry>
    <title type="html">귀차니스트님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment126" />
    <author>
      <name>(귀차니스트)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment126</id>
    <published>2008-10-12T04:49:10+09:00</published>
    <summary type="html">음 안녕하세요^^.

다른 일 때문에 최근 관리를 잘 하지못해 답변이 조금 늦었습니다.
일단 정말 여기서 얘기하는 Call By Reference라고 하는 것은 엄밀히말해서 정말 Reference라고 부르긴 힘듭니다. 정확하게 얘기한다면 Call By Pointer쯤 이라고 하면 되려나요??

계속되는 내용은 아래 댓글에 적도록 하겠습니다.</summary>
  </entry>
  <entry>
    <title type="html">귀차니스트님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment127" />
    <author>
      <name>(귀차니스트)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment127</id>
    <published>2008-10-12T04:57:38+09:00</published>
    <summary type="html">네..
  실제로 C 언어에서는 Call By Reference 라는 것을 지원하지 않습니다. 문법자체에서 그렇게 되어있는 것이죠. 그리하여 주소를 이용한 방법으로 값을 바꾸는 방법이 제공되나. 엄밀히 말하면 Reference라고 부르긴 힘들다고 생각이 되네요. 하지만 일반적으로 처음 수업을 듣게 되면 Call By Reference라고 가르키는 곳이 많기에 그렇게 적은겁니다.

  정말 원리를 따지고 본다면 C++ 언어에서 지원하는 int &amp;amp;a 와 같은 reference 문법또 한 내부적으로는 Pointer 를 이용한 값 변경뿐입니다. 이 것은 exe 파일을 만든 후, 그 파일을 실행시켜 동작하는 부분으로 이동하여 어셈블링을 하게 되면 볼 수 있습니다.
  언어라는 것이 컴퓨터에서 실행 가능한 명령어로 바꾸기 위해 문법적으로 작성하는 일종의 문장이다보니 실제 변경이 되었을 때에는 타겟플랫폼에 따라서 달라질 수도 있겠죠. 하지만 x86환경에서는 주소 참조를 이용한 값 변경이 가능하고, 그로 인해 reference를 사용하게 된다면 함수의 예로 들었을 때, 함수의 인자로 전달되는 값을 바꾸려면 reference 문법을 실제 내부적으론 Pointer를 이용한 값 변경이 일어나게 될 수 밖에 없죠^^.
  그래서 말씀그대로 C++ 에서는 불편한 점이 있었던 Pointer를 Reference로 감쌌다고 볼 수도 있습니다. 

마지막으로 논지와는 조금 벗어나지만 C++ 에서 지원하는 Reference는 정말 Reference라고 보기는 힘듭니다. 다른 언어( ex- C#, Java ... )등에서 지원하는 Primitive Type( C, C++에서는 Built-in Type)을 제외하고는 모두 reference type이라 하여 개체를 핸들링 할 수 있고, null을 지정할 수 있으나 C++ 에서는 그 것이 불가능하기 때문이죠.</summary>
  </entry>
  <entry>
    <title type="html">최민수님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment124" />
    <author>
      <name>(최민수)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment124</id>
    <published>2008-10-10T11:26:00+09:00</published>
    <summary type="html">지나가다가...우선 글 잘 읽었습니다.
이해가 안가는 부분이 있는데 설명 부탁드립니다. ^^;;

&amp;quot;call by reference를 흉내냈다&amp;quot;라는 표현을 쓰셨는데,
그럼 call by reference의 매커니즘?은 정확히 어떻게 되는 것입니까?

C++의 reference 문법은 말로 설명하셨고, C의 포인터변수를 예로 들어 주셨는데 같은 예제로 설명을 해주셨으면 이해가 빠를 것 같은데요. &#039;&#039;;;

http://kldp.org/node/52502
위 사이트의 맨 마지막 글을 보면 레퍼런스를 다루는 방법에 있어서C++ compiler 또한 C의 그것과 다를게 없다고 하는 데 맞는 말인가요?</summary>
  </entry>
  <entry>
    <title type="html">최민수님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment125" />
    <author>
      <name>(최민수)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment125</id>
    <published>2008-10-10T11:51:43+09:00</published>
    <summary type="html">추가로,
http://sookmyung.ac.kr/~hyoin01/h7.html

위 사이트의 한 내용입니다.
&amp;quot;C 언어에서는 원칙적으로 call-by-value 만을 허용한다.
그러나 변수의 주소를 추출하는 방법이 주어지기 때문에 call-by-reference 기법을 프로그래머가 실지로 구현할 수 있다.&amp;quot;

저도 흉내 냈다기 보다 call by reference를 구현했다는 표현이 맞는 것 같아서요.
C++에서는 그 기능을 사용하기 편리하게 wrapping해서 reference 문법을 추가한게 아닐까요?

유치한 예를 하나 들면,
자동차 옵션의 하나인 수동기어와 자동기어를 봤을 때,
---- 자동기어: &amp;quot;D&amp;quot; (drive mode)를 제공 함
---- 수동기어: drive mode 제공 안함
수동기어 자동차를 가진 사람이 기어를 2단, 3단, 4단 변속하는 것이 자동기어를 가진 사람이 D에 놓고 운전하는 것을 흉내내는 것인가요?</summary>
  </entry>
  <entry>
    <title type="html">지나가다님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment184" />
    <author>
      <name>(지나가다)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment184</id>
    <published>2008-12-18T14:27:43+09:00</published>
    <summary type="html">귀차니스트님...

Call-By-Reference를 지원하는 언어라... ㅎㅎ

제가 알고있기로는 Pointer를 쓰나 Reference를 쓰나 Address를 참조(Reference)하여 함수인자를 넘겨주는 방식을 모두 Call-By-Reference라고 합니다. 

즉, 함수인자를 넘겨줄때 값으로 넘겨주는 것이 아니라 주소값으로 넘겨준다면 모두 Call-By-Reference라는 것이죠..

어차피 함수를 부를때 참조해야 하는 것은 Value나 Address일테고 이 두 방식을 구별하기 위해 나온 개념이
Call-By-Value, Call-By-Reference라는 개념입니다. 

제가 알고있는 개념이 잘못됐다면
C, C++의 창시자인 Bjarne Stroustrup의 개념이 잘못된 것이고,
그 많은 C, C++ Language책을 썼던 대가들의 개념이 잘못된 것입니다. 

Call-By-Reference로 부를 수 있는 두 가지 방식은 pointer를 사용하는 방식과 reference를 이용하는 방식이 있다라고 보시는 것이 좋을 것 같네요</summary>
  </entry>
  <entry>
    <title type="html">귀차니스트님의 댓글</title>
    <link rel="alternate" type="text/html" href="http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment185" />
    <author>
      <name>(귀차니스트)</name>
    </author>
    <id>http://www.filewiki.net/tc/entry/%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%98%A4%EB%A5%98-Call-By-Reference-in-C#comment185</id>
    <published>2008-12-18T20:52:45+09:00</published>
    <summary type="html">음.. 그럴수도 있습니다.

제가 생각하는 언어적 측면에서 Reference와 실제 Call By Reference 라는 개념정의 자체가 다를 수 있으니까요.

하지만 누가 옳다 그르다를 떠나서 대가들이 앞에서 사용하고 정의했다고 해서 계속하여 그 것으로 불러야 한다고 볼 수는 없지 않을까요?

제가 생각하는 언어적 Reference 개념 자체와 호출 형식을 비교하면 실질적으로 다르게 불러야 한다고 옳기 때문에 이런 글을 적은 것이죠. 사실 내부 구현의 관점에서 본다면 Pointer, Reference 둘 다 Call By Reference 라고 부를 수도 있지만 컴파일러가 사용하는 구현 개념은 사실 언어 사용자에게 옵션일 뿐 필수는 아니라고 생각하기 때문입니다.

만약 Reference 그 자체의 개념만을 생각하여 한다면 어떨까요?.. 저는 그 물음에 대하여 위 글과 같은 결정을 내린것 뿐이죠^^;</summary>
  </entry>
</feed>
