<?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[Pointer und Referenzen]]></title><description><![CDATA[<p>Hallo, sind hier beide Funktionen ( f() und f2() ) gleich performant?</p>
<p>Bei f() da bekommt halt der Pointer eine Adresse und bei f2() dann bekommt die Referenz eine Adresse läuft das ganze daher nicht auf das selbe hinaus oder vertu ich mich da jetzt?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int f (   long *abc)
{
        cout&lt;&lt; &quot;f a1: &quot; &lt;&lt; &amp;abc &lt;&lt;endl; // Adresse wo der Pointer steht: 1245060
        cout&lt;&lt; &quot;f v1: &quot; &lt;&lt; *abc &lt;&lt; endl;  //Die Adresse v aus &quot;int main()&quot; 1245064
}

int f2 (   long &amp;abc)
{
        cout&lt;&lt; &quot;f2 a1: &quot; &lt;&lt; &amp;abc &lt;&lt;endl;   //Die Adresse v aus &quot;int main()&quot; 1245064
        cout&lt;&lt;  &quot;f2 v1: &quot; &lt;&lt;abc &lt;&lt; endl;   //Die Adresse v aus &quot;int main()&quot; 1245064
}

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

long v = 123;

        cout&lt;&lt;&quot;m a: &quot; &lt;&lt; &amp;v&lt;&lt;endl;

        f ( &amp;v );
        f2(v);

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/297907/pointer-und-referenzen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 04:21:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297907.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Jan 2012 14:07:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 14:07:15 GMT]]></title><description><![CDATA[<p>Hallo, sind hier beide Funktionen ( f() und f2() ) gleich performant?</p>
<p>Bei f() da bekommt halt der Pointer eine Adresse und bei f2() dann bekommt die Referenz eine Adresse läuft das ganze daher nicht auf das selbe hinaus oder vertu ich mich da jetzt?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int f (   long *abc)
{
        cout&lt;&lt; &quot;f a1: &quot; &lt;&lt; &amp;abc &lt;&lt;endl; // Adresse wo der Pointer steht: 1245060
        cout&lt;&lt; &quot;f v1: &quot; &lt;&lt; *abc &lt;&lt; endl;  //Die Adresse v aus &quot;int main()&quot; 1245064
}

int f2 (   long &amp;abc)
{
        cout&lt;&lt; &quot;f2 a1: &quot; &lt;&lt; &amp;abc &lt;&lt;endl;   //Die Adresse v aus &quot;int main()&quot; 1245064
        cout&lt;&lt;  &quot;f2 v1: &quot; &lt;&lt;abc &lt;&lt; endl;   //Die Adresse v aus &quot;int main()&quot; 1245064
}

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

long v = 123;

        cout&lt;&lt;&quot;m a: &quot; &lt;&lt; &amp;v&lt;&lt;endl;

        f ( &amp;v );
        f2(v);

system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2165794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165794</guid><dc:creator><![CDATA[ref]]></dc:creator><pubDate>Mon, 09 Jan 2012 14:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 14:12:03 GMT]]></title><description><![CDATA[<p>Das wird intern sicherlich sehr ähnlichen Code generieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165799</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 09 Jan 2012 14:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 14:20:26 GMT]]></title><description><![CDATA[<p>ref schrieb:</p>
<blockquote>
<p>Hallo, sind hier beide Funktionen ( f() und f2() ) gleich performant?</p>
</blockquote>
<p>Gleich performant, ja. Aber sie tun nicht wirklich das gleiche.</p>
<p>Dein Code etwas modifiziert (Funktionsparameter umbenannt):</p>
<pre><code class="language-cpp">int f(long *ptr)
{
  cout&lt;&lt; &quot;f a1: &quot; &lt;&lt; &amp;ptr &lt;&lt; endl;  // Adresse wo der Pointer steht
  cout&lt;&lt; &quot;f v1: &quot; &lt;&lt; *ptr &lt;&lt; endl;  // Die Adresse v aus &quot;int main()&quot;
}

int f2 (long &amp;ref)
{
  cout&lt;&lt; &quot;f2 a1: &quot; &lt;&lt; &amp;ref &lt;&lt; endl;  // Die Adresse v aus &quot;int main()&quot;
  cout&lt;&lt; &quot;f2 v1: &quot; &lt;&lt;  ref &lt;&lt; endl;  // Die Adresse v aus &quot;int main()&quot;
}

int main(int argc, char* argv[])
{
  long v = 123;
  f (&amp;v);
  f2( v);
}
</code></pre>
<p>Die Kommentare sind teils falsch.<br />
Die Addresse von v ist ptr, nicht *ptr. *ptr liefert Dir das Objekt v selbst.<br />
Und der Ausdruck ref liefert dir auch das Objekt v und nicht seine Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165802</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 09 Jan 2012 14:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 15:08:25 GMT]]></title><description><![CDATA[<p>Also müsste ich hier sagen?</p>
<pre><code class="language-cpp">cout&lt;&lt; &quot;f v1: &quot; &lt;&lt; *ptr &lt;&lt; endl;  // Pointer der auf die Adresse v aus &quot;int main()&quot; zeigt
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2165830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165830</guid><dc:creator><![CDATA[ref]]></dc:creator><pubDate>Mon, 09 Jan 2012 15:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 15:10:41 GMT]]></title><description><![CDATA[<p>Ne, Du müsstest sagen:</p>
<pre><code class="language-cpp">cout&lt;&lt; &quot;f v1: &quot; &lt;&lt; *ptr &lt;&lt; endl;  // Wert der Variablen aus main() auf die ptr zeigt ausgeben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2165834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165834</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 09 Jan 2012 15:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 16:12:02 GMT]]></title><description><![CDATA[<p>ref schrieb:</p>
<blockquote>
<p>Also müsste ich hier sagen? [...]</p>
</blockquote>
<p>Nein. Was willst Du denn da ausgeben? Die Adresse? Die Adresse ist in ptr gespeichert, ptr ist die Zeigervariable. Zeigarvariablen sind dazu da, Adressen zu speichern.</p>
<pre><code class="language-cpp">void f1(int* ptr)
{
  cout &lt;&lt; &quot;Die Adresse des int-Objekts ist &quot; &lt;&lt; ptr &lt;&lt; endl;
  cout &lt;&lt; &quot;Der int-Wert, der dort gespeichert wird, ist &quot; &lt;&lt; *ptr &lt;&lt; endl;
}

void f2(int&amp; ref)
{
  cout &lt;&lt; &quot;Die Adresse des int-Objekts ist &quot; &lt;&lt; &amp;ref &lt;&lt; endl;
  cout &lt;&lt; &quot;Der int-Wert, der dort gespeichert wird, ist &quot; &lt;&lt; ref &lt;&lt; endl;
}
</code></pre>
<p>Auf Maschinenebene sollte es keinen Unterschied zwischen diesen beiden Funktionen geben.</p>
<p>Achte darauf, dass hier &amp; und * jeweils einmal als Deklarator verwendet wird und einmal als Operator. Das darf man nicht durcheinander bringen.<br />
&amp; als Deklarator deklariert eine Referenz.<br />
&amp; als Operator ist der Adressoperator.<br />
* als Deklarator deklariert einen Zeiger.<br />
* als Operator dereferenziert eine Adresse.</p>
<p>Eine Referenz ist quasi ein sich selbst dereferenzierender, konstanter Zeiger. So habe ich mir das immer vorgestellt. Andere ziehen es vor, von &quot;Aliasen&quot; zu reden à la &quot;Eine Referenz ist nur ein anderer Name desselben Objekts&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165878</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 09 Jan 2012 16:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer und Referenzen on Mon, 09 Jan 2012 16:16:37 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Gleich performant, ja.</p>
</blockquote>
<p>Nein, ungleich.<br />
&amp;ptr und &amp;ref sind nicht gleich schnell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165885</guid><dc:creator><![CDATA[prfrmnt]]></dc:creator><pubDate>Mon, 09 Jan 2012 16:16:37 GMT</pubDate></item></channel></rss>