<?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[Call by value, call by reference]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Ich schaue mir gerade call by value und call by reference in C++ an. Bin übrigens in C++ ziemlich neu, nur zur Info. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich habe im Inet folgenden Code zu dem Thema gefunden:</p>
<pre><code class="language-cpp">void by_value(int a){
	a+=10;
}

void by_ref(int *a){
	(*a)+=10;
}

void by_ref2(int &amp;a){
	a+=10;
}

int main(){
	int x=40;
	by_value(x);
	//x==40
	by_ref(&amp;x);
	//x==50
	by_ref2(x);
	//x==60
	return 0;
}
</code></pre>
<p>Jetzt meine Frage. Wann sollte man denn by_ref und wann by_ref2 verwenden. Denn beides ist ja ein call by reference Aufruf, oder sind die beiden &quot;gleichwertig&quot;?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303454/call-by-value-call-by-reference</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 13:51:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303454.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 May 2012 10:53:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 10:53:19 GMT]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Ich schaue mir gerade call by value und call by reference in C++ an. Bin übrigens in C++ ziemlich neu, nur zur Info. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich habe im Inet folgenden Code zu dem Thema gefunden:</p>
<pre><code class="language-cpp">void by_value(int a){
	a+=10;
}

void by_ref(int *a){
	(*a)+=10;
}

void by_ref2(int &amp;a){
	a+=10;
}

int main(){
	int x=40;
	by_value(x);
	//x==40
	by_ref(&amp;x);
	//x==50
	by_ref2(x);
	//x==60
	return 0;
}
</code></pre>
<p>Jetzt meine Frage. Wann sollte man denn by_ref und wann by_ref2 verwenden. Denn beides ist ja ein call by reference Aufruf, oder sind die beiden &quot;gleichwertig&quot;?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211328</guid><dc:creator><![CDATA[blub85]]></dc:creator><pubDate>Mon, 14 May 2012 10:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 10:58:29 GMT]]></title><description><![CDATA[<p>Pointer können mehr als Referenzen. Sie können z.B. 0 sein (&quot;ungültig&quot;), oder auf einen Speicherbereich statt auf ein Objekt zeigen. (++p; &lt;- Zeigt jetzt sizeof(*p) byte weiter, also auf das direkt dahinter liegende Objekt). Referenzen sind also spezieller. Referenzen sind zu bevorzugen, wenn du diese &quot;Features&quot; nicht brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211331</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 14 May 2012 10:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 10:57:51 GMT]]></title><description><![CDATA[<p>Sie sind nicht gleichwertig.</p>
<blockquote>
<p>Wann sollte man denn by_ref und wann by_ref2 verwenden.</p>
</blockquote>
<p>Kommt drauf an, was du machen moechtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211332</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 14 May 2012 10:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 11:24:42 GMT]]></title><description><![CDATA[<p>Ist es denn so, dass bei by_ref eine Kopie erstellt wird, die zwar aufs gleiche Objekt zeigt, aber keine Referenz im eigentlichen Sinne ist?</p>
<p>Denn bei by_ref2 arbeitet man ja wirklich mit einer Referenz. Ich gebe hier ja wirklich nur die Speicheradresse weiter und es zeigen keine &quot;zwei Objekte&quot; auf die gleiche Speicheradresse. Sondnern nachwievor nur eins und das gebe ich hier weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211353</guid><dc:creator><![CDATA[blub85]]></dc:creator><pubDate>Mon, 14 May 2012 11:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 11:29:25 GMT]]></title><description><![CDATA[<p>Was da wie wo genau kopiert wird &quot;entscheidet&quot; der Optimizer. Bei so etwas Einfachem wird wohl eh einfach alles wegoptimiert. (Also alles geinlined.)<br />
Sprachlich erzeugen Pointer- und Referenzvariante erstmal ein Alias für das gleiche Objekt. Nur eben, dass man die Referenz danach nicht mehr ansprechen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211358</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 14 May 2012 11:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 11:32:09 GMT]]></title><description><![CDATA[<p>blub85 schrieb:</p>
<blockquote>
<p>Ist es denn so, dass bei by_ref eine Kopie erstellt wird, die zwar aufs gleiche Objekt zeigt, aber keine Referenz im eigentlichen Sinne ist?</p>
</blockquote>
<p>Der Zeiger (Sprich ein Integer der die Speicheradresse des Objektes enthält) wird kopiert.</p>
<p>blub85 schrieb:</p>
<blockquote>
<p>Denn bei by_ref2 arbeitet man ja wirklich mit einer Referenz. Ich gebe hier ja wirklich nur die Speicheradresse weiter...</p>
</blockquote>
<p>Eine Referenz kann, muss aber nicht eine Entsprechung im Speicher sein, in Gegensatz zu ein Zeiger, der eine Speicheradresse enthält. Je nach Optimierung und Situation kann es sein das eine Referenz ganz entfernt wird (und direkt auf dem Objekt gearbeitet wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211359</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 14 May 2012 11:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 11:33:26 GMT]]></title><description><![CDATA[<p>Dine Referenz bei by_ref2 wird durch den Compiler auch durch einen Zeiger realisiert. Ja, es wird bei by_ref eine Kopie erstellt, aber es ist eine Kopie des Zeigers. Und wie viele Zeiger auf ein Objekt zeigen, ist dem Objekt egal. Bitte bringe auch nicht Reference im Sinne von C++ und Reference im Sinne von call-by-reference durcheinander.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211360</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 14 May 2012 11:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 12:01:17 GMT]]></title><description><![CDATA[<p>Was meinst Du denn mit &quot;Reference im Sinne von C++&quot;?</p>
<p>Meinst Du damit sowas:</p>
<pre><code class="language-cpp">Foo f;
</code></pre>
<p>dass f eine Referenz auf das erstellte Objekt ist?</p>
<blockquote>
<p>Dine Referenz bei by_ref2 wird durch den Compiler auch durch einen Zeiger realisiert. Ja, es wird bei by_ref eine Kopie erstellt, aber es ist eine Kopie des Zeigers.</p>
</blockquote>
<p>Okay. by_ref habe ich soweit kapiert. Der Zeiger wird einfach nochmal kopiert und beide zeigen auf das gleiche Objekt.</p>
<p>Was passiert denn genau, wenn ich by_ref2 aufrufe?? Da wird doch nur mit der übergebenen Adresse gearbeitet, oder? Aber &amp;a ist ja nicht direkt ein Zeiger, sondern eine Referenz... Wo genau, bzw. wie kommt da ein Zeiger ins Spiel?</p>
<p>Danke!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211368</guid><dc:creator><![CDATA[blub85]]></dc:creator><pubDate>Mon, 14 May 2012 12:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 12:13:32 GMT]]></title><description><![CDATA[<p>blub85 schrieb:</p>
<blockquote>
<p>Aber &amp;a ist ja nicht direkt ein Zeiger, sondern eine Referenz... Wo genau, bzw. wie kommt da ein Zeiger ins Spiel?</p>
</blockquote>
<p>Ein Pointer hat als Wert auch nur eine Adresse. Wie bereits beschrieben, kann eine Referenz technisch durchaus so aussehen wie ein Pointer und umgekehrt. Was da genau passiert, wird von der Sprache nicht festgelegt. (Damit man das optimieren kann.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211370</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 14 May 2012 12:13:32 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 12:21:05 GMT]]></title><description><![CDATA[<p>Das würde aber ja bedeuten, dass by_ref2 auch einen neuen Pointer anlegt, der auf die gleiche Stelle im Speicher zeigt?</p>
<p>Dann wäre es ja -rein technisch gesehen- kein Unterschied zu by_ref.</p>
<p>Oder?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211375</guid><dc:creator><![CDATA[blub85]]></dc:creator><pubDate>Mon, 14 May 2012 12:21:05 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 12:37:31 GMT]]></title><description><![CDATA[<p>Ja, aber bitte schliesse nicht daraus, dass eines von beiden sinnlos sei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211381</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 14 May 2012 12:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 13:19:49 GMT]]></title><description><![CDATA[<p>Okay, nee, mach ich nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Aber worin liegen da die genauen Unterschiede/Vorteile?</p>
<p>Was mir jetzt spontan einfällt ist, dass ich mit (*p++) den Pointer auf die nächste Stelle zB eines Arrays setzten kann, wobei ich bei &amp;p++ den Wert der Variablen hochsetzen könnte.</p>
<p>Gibts noch weitere Unterschiede??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211391</guid><dc:creator><![CDATA[blub85]]></dc:creator><pubDate>Mon, 14 May 2012 13:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 13:32:37 GMT]]></title><description><![CDATA[<p>blub85 schrieb:</p>
<blockquote>
<p>Was meinst Du denn mit &quot;Reference im Sinne von C++&quot;?</p>
</blockquote>
<pre><code class="language-cpp">Foo f;       // Objekt, nicht Referenz!
Foo &amp; g = f; // Referenz, im Sinne eines Aliasnamens, auf f.
             // Dies kann, muss aber nicht, vom Compiler in einen Zeiger
             // umgewandelt werden, ebenso könnte der Compiler hier aber auch
             // einfach f verwenden.
             // Sprich: Es kann sein das zur Laufzeit hierfür Speicherplatz
             // (Eine Adresse) reserviert ist, ebenso kann es aber auch gänzlich
             // wegfallen, da eine C++ Referenz nur ein anderer Name, ein Alias
             // für das eigentliche Objekt ist.
Foo * h;     // Eine Speicheradresse die auf ein Objekt des Typs Foo zeigen
             // kann.
</code></pre>
<p>blub85 schrieb:</p>
<blockquote>
<p>Was passiert denn genau, wenn ich by_ref2 aufrufe?? Da wird doch nur mit der übergebenen Adresse gearbeitet, oder?</p>
</blockquote>
<p>Übergebene Adresse wäre ein Zeiger, eine C++ Referenz ist ein anderer Name für das Originalobjekt (und kann wie gesagt unter Umständen, aber nicht zwingend intern als Zeiger umgesetzt werden). Löss dich daher von dem Begriff Adresse für eine Referenz. Die Referenz muss theoretisch keinerlei weiteren Platz zur Laufzeit einnehmen. Ein Zeiger wiederum enthält genau eine Adresse, den ein Zeiger IST nichts anderes als eine Speicheradresse (die ggf. auf ein Objekt zeigt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211398</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 14 May 2012 13:32:37 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 13:41:32 GMT]]></title><description><![CDATA[<p>blub85 schrieb:</p>
<blockquote>
<p>Aber worin liegen da die genauen Unterschiede/Vorteile?</p>
</blockquote>
<p>Eine C++ Referenz ist der Aliasname für ein konkretes gültiges Objekt, das Objekt kannst du bei einer Referenz nicht tauschen, ebenso muss es ein gültiges Objekt sein (NULL ist unzulässig). Das liegt alleine schon an der Tatsache das eine Referenz theoretisch keinen Speicherplatz zur Laufzeit einnehmen muss (es aber in der Regel dennoch tut, das ist aber Situations- und Compilerabhängig).</p>
<p>Eine C++ Zeiger kann jederzeit auf ein anderes Objekt verweisen, da er nur eine Speicheradresse ist, die beliebig geändert werden kann. Somit ist auch ein NULL-Wert zulässig.</p>
<p>Von der Benutzung her sind Referenzen meist angenehmer. Ich kenne viele die Zeiger nur dann verwenden, wenn NULL-Werte zulässig sind, und ansonsten Referenzen verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211399</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 14 May 2012 13:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:36:26 GMT]]></title><description><![CDATA[<blockquote>
<p>Eine C++ Referenz ist der Aliasname für ein konkretes gültiges Objekt, das Objekt kannst du bei einer Referenz nicht tauschen, ebenso muss es ein gültiges Objekt sein (NULL ist unzulässig).</p>
</blockquote>
<pre><code class="language-cpp">int&amp; ri = *reinterpret_cast&lt;int*&gt;(0);
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211405</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 14 May 2012 14:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:41:18 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int&amp; ri = *reinterpret_cast&lt;int*&gt;(0);
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Speicherzugriffsfehler.</p>
<p>EDIT: Scheinbar doch nicht:</p>
<pre><code class="language-cpp">include &lt;iostream&gt;

int main() {
  int&amp; ri = *reinterpret_cast&lt;int*&gt;(0);
  std::cout &lt;&lt; (&amp;ri == 0) &lt;&lt; std::endl;
}
</code></pre>
<p>Ausgabe:<br />
1<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211407</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 14 May 2012 14:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:39:41 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int&amp; ri = *reinterpret_cast&lt;int*&gt;(0);
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Speicherzugriffsfehler.</p>
</blockquote>
<p>Nö, wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211408</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 14 May 2012 14:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:40:00 GMT]]></title><description><![CDATA[<p>Ätsch.<br />
<a href="http://ideone.com/DbrWn" rel="nofollow">http://ideone.com/DbrWn</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211409</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 14 May 2012 14:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:46:20 GMT]]></title><description><![CDATA[<p>Aber ist das erlaubt? Nicht UB oder IB?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211410</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 14 May 2012 14:46:20 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:50:53 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Aber ist das erlaubt? Nicht UB oder IB?</p>
</blockquote>
<p>Doch UB, aber das heißt ja gerade nicht, dass der Compiler unbedingt dafür sorgen muss, dass normalerweise harmloser Code plötzlich Speicherfehler erzeugen <strong>muss</strong>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211411</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 14 May 2012 14:50:53 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 14:56:50 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>pyhax schrieb:</p>
<blockquote>
<p>Aber ist das erlaubt? Nicht UB oder IB?</p>
</blockquote>
<p>Doch UB, aber das heißt ja gerade nicht, dass der Compiler unbedingt dafür sorgen muss, dass normalerweise harmloser Code plötzlich Speicherfehler erzeugen <strong>muss</strong>.</p>
</blockquote>
<p>So meinte ich das auch gar nicht. Ich dachte nur, es würde einen Speicherfehler verursachen, weil <em>(int</em>)(0) ja einen Nullpointer dereferenziert. Und als es dann keinen Speicherfehler gab, wollte ich wissen, ob es vlt irgend eine Klausel im Standard gibt, dass die Dereferenzierung eines Nullpointers bei der Initialisierung eine Referenz erlaubt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211413</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 14 May 2012 14:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 15:03:39 GMT]]></title><description><![CDATA[<p>Es ist keine richtige Dereferenzierung, da ja auf niedrigerer Ebene eine Referenz nichts anderes als ein Zeiger ist. Unter der Haube wurde da eigentlich nur der Wert eines Zeigers in eine Referenz kopiert.</p>
<p>Dereferenziert muss erst werden, sobald auf den Wert zugegriffen wird. Und da hättes BUMM gemacht:</p>
<pre><code class="language-cpp">int&amp; ri = *static_cast&lt;int*&gt;(0);
std::cout &lt;&lt; ri + 7; // BUMM
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2211414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211414</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 14 May 2012 15:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Call by value, call by reference on Mon, 14 May 2012 15:15:10 GMT]]></title><description><![CDATA[<p>Es ist natürlich trotzdem undefiniert ohne Ende, nicht dass hier ein falscher Eindruck entsteht. Eine Referenz muss nicht durch Pointer implementiert sein, sie muss nicht einmal eine Adresse oder überhaupt irgendeine Art von Wert haben. Und das gezeigte ist auch keine echte Nullreferenz, da es bei der kleinsten Berührung explodiert, sondern einfach ein bisschen Klugscheißen und zum Denken anregen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2211415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2211415</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 14 May 2012 15:15:10 GMT</pubDate></item></channel></rss>