<?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[Referenzen bei Variablen?]]></title><description><![CDATA[<p>Ich kenne den Referenzoperator bislang nur als Definition einer Übergabe bei Funktionen als auch um an den Pointer einer Value Variable zu kommen. Jetzt habe ich aber gesehen das man Variablen auch als Referenz definieren kann. Was bedeutet das dann? Wo ist der Unterschied zu einem Pointer?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216996/referenzen-bei-variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 22:06:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216996.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Jul 2008 18:42:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenzen bei Variablen? on Tue, 01 Jul 2008 18:42:30 GMT]]></title><description><![CDATA[<p>Ich kenne den Referenzoperator bislang nur als Definition einer Übergabe bei Funktionen als auch um an den Pointer einer Value Variable zu kommen. Jetzt habe ich aber gesehen das man Variablen auch als Referenz definieren kann. Was bedeutet das dann? Wo ist der Unterschied zu einem Pointer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539289</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Tue, 01 Jul 2008 18:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Tue, 01 Jul 2008 18:45:22 GMT]]></title><description><![CDATA[<p>Also diese Diskussion hatten wir hier ja schon tausend mal. <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>Such mal pointer vs. referenzen oder so.</p>
<p>Das offensichtilche ist:<br />
- Einfacher zu gebrauchen<br />
- Den -&gt; Operator kannst du überladen (smart pointer) ( . -Operator nicht)<br />
- Referenz kann nicht 0 sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539295</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 01 Jul 2008 18:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Tue, 01 Jul 2008 18:51:03 GMT]]></title><description><![CDATA[<p>Bei mir war es eher eine Verständnisfrage, eine längere Suche hat für mich jetzt ergeben das eine Referenz sowas wie ein Alias auf eine vorher existente Variable ist (also den selben Pointer haben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539298</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Tue, 01 Jul 2008 18:51:03 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Tue, 01 Jul 2008 19:36:40 GMT]]></title><description><![CDATA[<blockquote>
<p>also den selben Pointer haben</p>
</blockquote>
<p>Von der eigentlichen Variable kannst Du eine &quot;Adresse&quot; erfragen und in einem Pointer abspeichern: pa = &amp;a<br />
Geht dies auch bei der C++-Referenz? <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>In der Tat:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using namespace std;

int main()
{
    int a=42;
    int&amp; b = a;
    int* pa = &amp;a;
    int* pb = &amp;b;

    cout &lt;&lt; b &lt;&lt; &quot; &quot; &lt;&lt; pa &lt;&lt; &quot; &quot; &lt;&lt; pb;

    getch();
}
</code></pre>
<blockquote>
<p>42 0x22ff74 0x22ff74</p>
</blockquote>
<p>Gute Erklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539310</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Tue, 01 Jul 2008 19:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Tue, 01 Jul 2008 23:59:13 GMT]]></title><description><![CDATA[<p>eigentlich unterscheiden sich pointer und referezen nicht groß in der benutzung. denn beides brauch man!</p>
<p>ich hab die erfahrung gemacht, dass pointer sich super eignen wen du auf etwas ZEIGEN willst <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="😉"
    /> und referenzen zB bei rückgabe werten oder übergaben..</p>
<p>bsp:<br />
du baust dir einen eigenen datentyp. dann erhalten die methoden dieses datentyps &quot;immer&quot; eine referenz auf diesen typen. die faustregel sollte sein: standard typen wie int, float, char, string kopiert man bei der übergabe und eigene typen als rederenz. und genau so bei der rückgabe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539381</guid><dc:creator><![CDATA[princess]]></dc:creator><pubDate>Tue, 01 Jul 2008 23:59:13 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 03:20:57 GMT]]></title><description><![CDATA[<p>Man sollte &quot;eigentlich&quot; immer auf referenzen zurückgreifen... pointer sollte man verwenden, wenn der wert NULL sein kann.</p>
<pre><code class="language-cpp">//Referenz
class foo{

int &amp;m_i;

foo(int &amp;i) : (m_i(i){}

}

//Pointer
class bar{

int *m_i;

bar(int &amp;i) : (m_i(&amp;i){}

}
</code></pre>
<p>das problem bspw. hierberi, muss du zwangläufig einen Default Kosntruktor implementieren (für einsatz von stl containern), ist das bei &quot;foo&quot; nicht möglich, da die membervariable als referenz auf eine übergeben zeigen muss.. und nicht NULL sein kann.. bei bar könnte ich den pointer immerhin auf 0 setzen...#</p>
<p>ein kleiens beispiel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539390</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 02 Jul 2008 03:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 05:24:21 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Man sollte &quot;eigentlich&quot; immer auf referenzen zurückgreifen... pointer sollte man verwenden, wenn der wert NULL sein kann.</p>
</blockquote>
<p>Wenn ich mit richtig erinnere verwendet z.B. Qt konsequent Pointer mit der Begründung, das man dann auch direkt erkennt das mit dem Original Objekt gearbeitet wird und nicht einer Kopie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539409</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Wed, 02 Jul 2008 05:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 07:35:06 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>...<br />
Wenn ich mit richtig erinnere verwendet z.B. Qt konsequent Pointer mit der Begründung, das man dann auch direkt erkennt das mit dem Original Objekt gearbeitet wird und nicht einer Kopie.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> Also diese Begründung halte ich für ziemlich dämlich.<br />
Das kann nur jemand geschrieben haben, der nicht viel Erfahrung mit Referenzen hat (weswegen ich ihn insgesamt für nicht allzu berufen halte, C++-Programmiertechniken zu bewerten oder Designentscheidungen zu treffen).<br />
(nur zur Klarstellung: Mir ist durchaus bewusst, dass das kein statement von dir/pospiech ist).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539413</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:35:06 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 05:53:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/734">@simon</a>: muss ich mich angegriffen fühlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539415</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 02 Jul 2008 05:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 05:56:07 GMT]]></title><description><![CDATA[<p>Macht es denn Performance mäßig einen Unterschied ob man einen Pointer oder eine Referenz übergibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539416</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Wed, 02 Jul 2008 05:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 06:31:27 GMT]]></title><description><![CDATA[<p>naja nicht unbedingt, allerdings geht bischen zeit drauf wenn du den zeiger derefenzieren musst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539432</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 02 Jul 2008 06:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 07:35:27 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/734">@simon</a>: muss ich mich angegriffen fühlen?</p>
</blockquote>
<p>Also von mir nicht!<br />
Ich teile Deine Einschätzung: Referenzen sind was Feines!</p>
<p>Du bist nur &quot;aus historischen Gründen&quot; in das Zitat gerutscht (ich mach' Dich da mal raus).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539464</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 08:49:11 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Man sollte &quot;eigentlich&quot; immer auf referenzen zurückgreifen... pointer sollte man verwenden, wenn der wert NULL sein kann.</p>
<pre><code class="language-cpp">//Referenz
class foo{

int &amp;m_i;

foo(int &amp;i) : (m_i(i){}

}

//Pointer
class bar{

int *m_i;

bar(int &amp;i) : (m_i(&amp;i){}

}
</code></pre>
<p>das problem bspw. hierberi, muss du zwangläufig einen Default Kosntruktor implementieren (für einsatz von stl containern), ist das bei &quot;foo&quot; nicht möglich, da die membervariable als referenz auf eine übergeben zeigen muss.. und nicht NULL sein kann.. bei bar könnte ich den pointer immerhin auf 0 setzen...#</p>
<p>ein kleiens beispiel...</p>
</blockquote>
<p>Wieso aus der Tatsache, dass Zeiger auch 0 sein können, folgt, dass man sie dann nicht verwenden sollte, wenn 0 kein sinnvoller Ausgangswert ist, erschließt sich mir nicht. Generell sehe ich im Falle nicht-statischer Member keinen Vorteil, den Referenzen gegenüber konstanten Zeiger haben könnten (ignorieren wir mal den pathologischen Fall eines defekten &amp;-Operators). Nachteile dagegen sind offensichtlich: da Referenzen keine Objekte sind, kann man nicht mit Zeigern auf Member auf sie verweisen. Abgesehen davon hat man dann auch den seltsamen Fall, dass sizeof(member1)+sizeof(member2)+... &gt; sizeof(Klasse) gelten kann.<br />
Da man in vielen Fällen tatsächlich eine Wahl hat zwischen Zeigern und Referenzen sollte man generell die Form wählen, die die Intention des Programmierers besser ausdrückt, und sich nicht mit irgendwelchen vermeintlichen oder unwesentlichen technischen Unterschieden aufhalten. Wenn ich ein Alias brauche, nutze ich Referenzen - das die Objekte auch eine Adresse haben, ist in dem Moment völlig irrelevant - hat die Adresse selbst einen &quot;Wert&quot; für mich, benutze ich Zeiger (die selbe Argumentation bestimmt dann auch die Form evtl. nötiger casts). Natürlich spielen technische Fragen in bestimmten Fällen ebenfalls eine Rolle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539499</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 02 Jul 2008 08:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 09:28:55 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>naja nicht unbedingt, allerdings geht bischen zeit drauf wenn du den zeiger derefenzieren musst...</p>
</blockquote>
<p>diese kosten hast du bei referenzen aber auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539519</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 02 Jul 2008 09:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 09:34:12 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>Macht es denn Performance mäßig einen Unterschied ob man einen Pointer oder eine Referenz übergibt?</p>
</blockquote>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>naja nicht unbedingt, allerdings geht bischen zeit drauf wenn du den zeiger derefenzieren musst...</p>
</blockquote>
<p>Das glaub ich nicht.<br />
Die Referenz muss genauso dereferenziert werden, das geschieht nur implizit.</p>
<p>Die Funktionen</p>
<pre><code class="language-cpp">void assign_5_ref( int &amp;r ) { r = 5; }
void assign_5_ptr( int *p ) { *p = 5; }
</code></pre>
<p>würden den gleichen Maschinencode erzeugen.</p>
<p>Referenzen können im Vergleich zu Pointern die Performance steigern:<br />
Dass ihnen nur einmal ein Objekt zugewiesen werden kann (normalerweise), kann dem Compiler bei der Optimierung helfen.</p>
<p>int &amp;x;<br />
ist also nicht gleichbedeutend mit<br />
int *x;<br />
sondern mit<br />
int * const x;</p>
<p>Allerdings hat const kaum noch Stellenwert.<br />
Lediglich bei statischen/globalen Variablen (die soll man eh nicht benutzen) tun sich noch manche Compiler noch schwer. ( auch VCpp )</p>
<p>Bleibt also nur noch, dass bei Referenzen die Prüfung auf NULL oder andere Ausnahmewerte wegfällt.</p>
<p>//edti: -.- wieder zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539526</guid><dc:creator><![CDATA[wandrer]]></dc:creator><pubDate>Wed, 02 Jul 2008 09:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenzen bei Variablen? on Wed, 02 Jul 2008 10:00:10 GMT]]></title><description><![CDATA[<p>Ich denke, dass beide ihre Berechtigung haben. Eine Referenz ist lediglich ein &quot;verkappter&quot; Zeiger. Was ich wirklich grausig finde bei C/C++, ist die Tatsache, dass die gleichen Zeichen (&amp;,*) für völlig verschiedene Dinge verwendet werden. Das schafft bei Anfängern/Umsteigern wohl die größten Probleme und ist m.E. ein echter Schwachpunkt von C/C++. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539552</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Wed, 02 Jul 2008 10:00:10 GMT</pubDate></item></channel></rss>