<?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 Referenzen und Pointern]]></title><description><![CDATA[<p>Stimmt das so wie ich den Code kommentiert habe?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *ptr=0;

  int &amp;function ( )
  {
    cout&lt;&lt;&quot;ptr zeigt auf Adresse: &quot;&lt;&lt; hex &lt;&lt; ptr&lt;&lt;endl;
    return *ptr; // Gibt die Adresse der Variable var zurück
  }

int main()
{
int var =8;

cout&lt;&lt;&quot;Variable var steht an Adresse: &quot; &lt;&lt; hex &lt;&lt; &amp;var&lt;&lt;endl;

ptr=&amp;var;

int ref = function();  // In ref wird der Wert geschrieben der an der Adresse steht welcher von function zurückgegeben wurde
                       // Es wird extra eine lokale Variable angelegt
cout&lt;&lt;&quot;ref Ausgabe: &quot;&lt;&lt; ref &lt;&lt;endl;

cout&lt;&lt;endl&lt;&lt;endl;

int &amp;ref_2 = function();  // ref_2 greift auf die Adresse zu welche von function zurückgegeben wurde
                          // Hier wird nicht nochmal extra eine lokale Variable angelegt.
cout&lt;&lt;&quot;&amp;ref_2 greift auf die Adresse: &quot; &lt;&lt; &amp;ref_2 &lt;&lt; &quot; zu&quot;&lt;&lt;endl;

cout&lt;&lt;&quot;ref2 Ausgabe: &quot; &lt;&lt; ref_2 &lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

system(&quot;PAUSE&quot;);
return 0;

}
</code></pre>
<p>Und hier:</p>
<pre><code class="language-cpp">int &amp;ref_2 = function();
</code></pre>
<p>arbeitet &amp;ref_2 doch eigentlich wie ein Pointer oder werfe ich da jetzt was durcheinander?</p>
<p>Weil &amp;ref_2 bekommt ja eine Adresse übergeben und das was an der Adresse steht gebe ich mit</p>
<pre><code class="language-cpp">cout&lt;&lt;ref_2&lt;&lt;endl;
</code></pre>
<p>aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303308/frage-zu-referenzen-und-pointern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 14:46:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303308.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 May 2012 14:59:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Referenzen und Pointern on Thu, 10 May 2012 14:59:54 GMT]]></title><description><![CDATA[<p>Stimmt das so wie ich den Code kommentiert habe?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *ptr=0;

  int &amp;function ( )
  {
    cout&lt;&lt;&quot;ptr zeigt auf Adresse: &quot;&lt;&lt; hex &lt;&lt; ptr&lt;&lt;endl;
    return *ptr; // Gibt die Adresse der Variable var zurück
  }

int main()
{
int var =8;

cout&lt;&lt;&quot;Variable var steht an Adresse: &quot; &lt;&lt; hex &lt;&lt; &amp;var&lt;&lt;endl;

ptr=&amp;var;

int ref = function();  // In ref wird der Wert geschrieben der an der Adresse steht welcher von function zurückgegeben wurde
                       // Es wird extra eine lokale Variable angelegt
cout&lt;&lt;&quot;ref Ausgabe: &quot;&lt;&lt; ref &lt;&lt;endl;

cout&lt;&lt;endl&lt;&lt;endl;

int &amp;ref_2 = function();  // ref_2 greift auf die Adresse zu welche von function zurückgegeben wurde
                          // Hier wird nicht nochmal extra eine lokale Variable angelegt.
cout&lt;&lt;&quot;&amp;ref_2 greift auf die Adresse: &quot; &lt;&lt; &amp;ref_2 &lt;&lt; &quot; zu&quot;&lt;&lt;endl;

cout&lt;&lt;&quot;ref2 Ausgabe: &quot; &lt;&lt; ref_2 &lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

system(&quot;PAUSE&quot;);
return 0;

}
</code></pre>
<p>Und hier:</p>
<pre><code class="language-cpp">int &amp;ref_2 = function();
</code></pre>
<p>arbeitet &amp;ref_2 doch eigentlich wie ein Pointer oder werfe ich da jetzt was durcheinander?</p>
<p>Weil &amp;ref_2 bekommt ja eine Adresse übergeben und das was an der Adresse steht gebe ich mit</p>
<pre><code class="language-cpp">cout&lt;&lt;ref_2&lt;&lt;endl;
</code></pre>
<p>aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210228</guid><dc:creator><![CDATA[refref]]></dc:creator><pubDate>Thu, 10 May 2012 14:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen und Pointern on Thu, 10 May 2012 15:39:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">return *ptr; // Gibt die Adresse der Variable var zurück
</code></pre>
<p>Nein, gibt eine Referenz auf *ptr zurück.</p>
<pre><code class="language-cpp">int ref = function();  // In ref wird der Wert geschrieben der an der Adresse steht welcher von function zurückgegeben wurde
</code></pre>
<p>Nein ref wird der Wert zugeschrieben, den *ptr hat</p>
<pre><code class="language-cpp">// Es wird extra eine lokale Variable angelegt
</code></pre>
<p>Häh?</p>
<pre><code class="language-cpp">int &amp;ref_2 = function();  // ref_2 greift auf die Adresse zu welche von function zurückgegeben wurde
</code></pre>
<p>Nein, ref2 wird mit dem Funktionsergebnis initialisiert, welches eine Referenz auf *ptr ist. Nichts mit Adressen und Zugriffen.</p>
<pre><code class="language-cpp">// Hier wird nicht nochmal extra eine lokale Variable angelegt.
</code></pre>
<p>Wieder: Häh? Sowohl ref als auch ref2 sind lokal in main.</p>
<blockquote>
<p>Und hier:</p>
<pre><code class="language-cpp">int &amp;ref_2 = function();
</code></pre>
<p>arbeitet &amp;ref_2 doch eigentlich wie ein Pointer oder werfe ich da jetzt was durcheinander?</p>
</blockquote>
<p>Referenzen haben große Ähnlichkeiten mit Pointern, oft sind sie intern auch mit Pointern implementiert. Aber Referenzen sind keine Pointer, sie sind Referenzen und es gelten andere Regeln für sie.</p>
<blockquote>
<p>Weil &amp;ref_2 bekommt ja eine Adresse übergeben und das was an der Adresse steht gebe ich mit</p>
<pre><code class="language-cpp">cout&lt;&lt;ref_2&lt;&lt;endl;
</code></pre>
<p>aus.</p>
</blockquote>
<p>Erstens wird hier &amp;ref_2 nichts übergeben, das &amp; gehört hier zum Typen. Und eine Referenz ist kein Pointer, sondern eine Referenz und das was du da ausgibst ist das was die Referenz, äh..., referenziert.</p>
<p>Zusammengefasst: Man hat beim Lesen das Gefühl, dass du das Thema möglicherweise verstanden hast, aber durch deine komische Ausdrucksweise kann man sich nicht sicher sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210231</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 May 2012 15:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Referenzen und Pointern on Thu, 10 May 2012 15:25:13 GMT]]></title><description><![CDATA[<p>refref schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int *ptr=0;

int &amp;function ( )
{
  cout&lt;&lt;&quot;ptr zeigt auf Adresse: &quot;&lt;&lt; hex &lt;&lt; ptr&lt;&lt;endl;
  return *ptr; // Gibt die Adresse der Variable var zurück
}
</code></pre>
</blockquote>
<p>Ich würde hier &quot;Referenz auf die&quot; statt &quot;Adresse der&quot; sagen. Wobei ich das mit der Referenz erst bei näherem Hingucken gesehen habe. In C++ ist meines Wissens nach folgender Stil populärer</p>
<pre><code class="language-cpp">int* ptr=0;
int&amp; function();
</code></pre>
<p>Zumindest schreibe ich das so.</p>
<p>Ich denke, Du hast es verstanden, wobei die Beschreibungen wie &quot;greift auf die Adresse zu&quot; ein bisschen komisch sind. Es sind nunmal Referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210232</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 10 May 2012 15:25:13 GMT</pubDate></item></channel></rss>