<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Frage zu Call by Reference]]></title><description><![CDATA[<p>Hallo ich habe folgendes Programm geschrieben welches einen Wert per Referenz an die Funktion übergibt:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int add(int &amp;z1);

int main(int argc, char* argv[])
{
int func;
int ez1;

cout&lt;&lt;&quot;eingabe: &quot;;
cin&gt;&gt;ez1;

func = add(ez1);

cout&lt;&lt;func;

system(&quot;PAUSE&quot;);
}

        int add(int &amp;z1)
        {
        int erg;

        erg = z1 + 2;

        return erg;
        }
</code></pre>
<p>Nun mein Frage wo ist da jetzt der Unterschied ob ich Call by reference oder Called by value mache ?</p>
<p>Unser Lehrer hat uns nur kurz erklärt was das ist und wie das geht.</p>
<p>Aber er hat nicht erklärt wofür was ist -.-</p>
<p>Also wann benutz man Call by reference und wann Call by value ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237186/frage-zu-call-by-reference</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237186.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Mar 2009 15:40:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 15:40:18 GMT]]></title><description><![CDATA[<p>Hallo ich habe folgendes Programm geschrieben welches einen Wert per Referenz an die Funktion übergibt:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int add(int &amp;z1);

int main(int argc, char* argv[])
{
int func;
int ez1;

cout&lt;&lt;&quot;eingabe: &quot;;
cin&gt;&gt;ez1;

func = add(ez1);

cout&lt;&lt;func;

system(&quot;PAUSE&quot;);
}

        int add(int &amp;z1)
        {
        int erg;

        erg = z1 + 2;

        return erg;
        }
</code></pre>
<p>Nun mein Frage wo ist da jetzt der Unterschied ob ich Call by reference oder Called by value mache ?</p>
<p>Unser Lehrer hat uns nur kurz erklärt was das ist und wie das geht.</p>
<p>Aber er hat nicht erklärt wofür was ist -.-</p>
<p>Also wann benutz man Call by reference und wann Call by value ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685880</guid><dc:creator><![CDATA[call]]></dc:creator><pubDate>Wed, 25 Mar 2009 15:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 15:48:50 GMT]]></title><description><![CDATA[<pre><code>int add(int &amp;z1)
        {
        z1 = z1 + 2;

        return z1
        }
</code></pre>
<p>das tat er meinen, tu ich denken.<br />
da machts einen unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685889</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 25 Mar 2009 15:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 16:17:00 GMT]]></title><description><![CDATA[<p>Ahja Volkard ... ähm NEXT xD</p>
<p>Ob ich es jetzt so mache:</p>
<pre><code class="language-cpp">int add(int &amp;z1)
        {
        z1 = z1 + 2;

        return z1 ;
        }
</code></pre>
<p>oder so:</p>
<pre><code class="language-cpp">int add(int z1)
        {
        int erg;
        erg = z1 + 2;

        return erg ;
        }
</code></pre>
<p>Wo ist da nun der Unterschied ausser das ich bei der 2ten Variante mehr Code schreibe ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685898</guid><dc:creator><![CDATA[call]]></dc:creator><pubDate>Wed, 25 Mar 2009 16:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 16:19:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main(int argc, char* argv[]) 
{ 
int func; 
int ez1; 

cout&lt;&lt;&quot;eingabe: &quot;; 
cin&gt;&gt;ez1; 

func = add(ez1); 

cout&lt;&lt;func&lt;&lt;' '&lt;&lt;ez1&lt;&lt;'\n'; //geändert!

system(&quot;PAUSE&quot;); 
}
</code></pre>
<p>der unterschied ist, daß ez1 verändert worden ist, wenn das ein referenzparameter war.<br />
aber als value-arameter bleibt ez1 heile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685900</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 25 Mar 2009 16:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 16:19:54 GMT]]></title><description><![CDATA[<p>Naja der Unterschied ist, dass du nochmal extra Speicher für eine unnötige Variable anforderst. Außerdem übergibst du bei dem 1. Beispiel das Original und im 2. eine Kopie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685901</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 25 Mar 2009 16:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Call by Reference on Wed, 25 Mar 2009 16:32:28 GMT]]></title><description><![CDATA[<p>1.) Also du solltest, wenn du den Parameter nicht ändest, und nicht per Value übergeben möchtest, die Referenz schon immer const machen...</p>
<p>2.) Lohnt sich die Übergabe per const Ref, wenn der Typ nicht kopiert werden kann und ab einer Größe, die nicht mehr in ein Register passt (bei x86 also ab &gt;4Byte, bei x64 ab &gt;8Byte)</p>
<p>3.) Übergibt man nicht per Value sondern per referenz (bzw pointer, wenn auch NULL möglich sein soll), wenn man den Parameter ändern möchte und den geänderten dann wiederhaben möchte - (schlechtes) Bsp.:</p>
<pre><code class="language-cpp">size_t Send (std::string &amp;tosend)
{
 //versuchen, &quot;tosend&quot; komplett zu senden - wenn das nicht klappt, dann gib die gesendeten Bytes zurück und schneide bei tosend das ab, was schon gesendet wurde
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685909</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 25 Mar 2009 16:32:28 GMT</pubDate></item></channel></rss>